<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Kazeer Blog</title>
    <link>https://kazeer.ai/en/blog/</link>
    <description>Practical guides for cafe, restaurant, and warung owners: COGS per menu item, daily stock checks, kitchen orders, sales reports, and staff access.</description>
    <language>en</language>
    <lastBuildDate>Wed, 21 Oct 2026 00:00:00 GMT</lastBuildDate>
    <atom:link href="https://kazeer.ai/en/blog/rss.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>How to start a member and points program: cost the reward, then ask for consent</title>
      <link>https://kazeer.ai/en/blog/member-and-points-program/</link>
      <guid isPermaLink="true">https://kazeer.ai/en/blog/member-and-points-program/</guid>
      <description>Cost the reward from your COGS, keep the rules easy to remember, sign members up with consent, then judge the results by total transactions and gross profit.</description>
      <content:encoded><![CDATA[<p>Picture this: a customer buys a Kopi Susu Aren almost every morning on the way to work. They&#39;ve been in dozens of times, but at the counter nothing sets them apart from someone walking in for the first time.</p>
<p>A member and points program gives customers like this a reward after a set amount of spending. It pays for itself when the extra visits bring in more gross profit than the rewards cost.</p>
<div class="md-note" role="note" data-kind="example"><p><strong>Example:</strong> Every price, COGS (cost of goods sold) figure, and sales number in this article is an example, not data from a real business.</p>
</div>
<h2 id="when-a-points-program-fits">When a points program fits</h2>
<p>A points program fits when many of your customers come back again and again, as at a coffee shop near offices or a campus, or a bakery people stop at for breakfast. They collect points quickly, so the first reward feels close.</p>
<p>It fits less well in two cases:</p>
<ul role="list">
<li>Most customers come only once, say at a tourist spot. For them, a well-kept <a href="https://kazeer.ai/en/blog/google-business-profile/">Google Business Profile</a> does more.</li>
<li>Customers come only a few times a year, say to a restaurant for family occasions. The reward is too far off and easy to forget.</li>
</ul>
<p>Check with the rule you have in mind: how many times does a regular have to come in for the first reward? If it takes months, change the rule.</p>
<h2 id="cost-the-reward-first">Cost the reward first</h2>
<p>A reward from your menu can cost you far less than it&#39;s worth to the customer. A free Kopi Susu Aren is worth Rp22,000 to the customer, while its dine-in COGS is Rp8,400, as in the example in the <a href="https://kazeer.ai/en/blog/cogs-per-menu-item/">guide to COGS per menu item</a>.</p>
<p>The real cost depends on how the reward gets used:</p>
<ul role="list">
<li>If the free cup is extra, say on a day the customer wasn&#39;t planning to buy, it costs you its COGS, Rp8,400.</li>
<li>If it replaces a cup they would have bought anyway, you lose that sale, so it costs the selling price, Rp22,000.</li>
</ul>
<p>Then decide how much spending earns one reward. Worked example, with 1 point for every Rp10,000 spent:</p>
<div class="md-table" role="region" tabindex="0" aria-label="Cost the reward first (table, scrollable)"><table><thead><tr><th scope="col">Reward at (example)</th><th scope="col" style="text-align:right">Minimum spending for 1 reward</th><th scope="col" style="text-align:right">Cost based on COGS</th><th scope="col" style="text-align:right">Cost based on selling price</th></tr></thead><tbody><tr><td>10 points</td><td style="text-align:right">Rp100,000</td><td style="text-align:right">8.4%</td><td style="text-align:right">22%</td></tr><tr><td>20 points</td><td style="text-align:right">Rp200,000</td><td style="text-align:right">4.2%</td><td style="text-align:right">11%</td></tr></tbody></table></div>
<p>How to read the second row: Rp8,400 ÷ Rp200,000 = 4.2%, and Rp22,000 ÷ Rp200,000 = 11%.</p>
<p>A customer who usually buys one Kopi Susu Aren earns 2 points a visit. With a 20-point reward, they reach 20 points on the 10th visit, or after about two weeks for someone who comes in every weekday.</p>
<p>For a customer like this, a free cup usually replaces a purchase, so its cost is close to the selling price. Something they rarely buy, such as a croissant, is more likely to be an extra that costs you close to its COGS. Whatever you choose, make sure you always have the ingredients.</p>
<h2 id="rules-customers-can-remember">Rules customers can remember</h2>
<p>If the cashier needs more than two sentences to explain the program, customers won&#39;t remember it either. Decide these four things, then write them on one card by the counter:</p>
<ol>
<li>How much spending earns a point, say 1 point for every Rp10,000 per transaction, with anything left over not counted. Points per visit are simpler, but then someone buying one iced tea earns the same points as a table of four.</li>
<li>The reward on offer, one or two choices at most.</li>
<li>When points expire, say when a member hasn&#39;t bought anything for 6 months. Tell people when they sign up, not when their points run out.</li>
<li>Purchases that don&#39;t earn points, such as promo prices or bundle prices, because their gross profit is already thinner, as the <a href="https://kazeer.ai/en/blog/slow-hour-promotions/">guide to slow-hour promotions</a> shows.</li>
</ol>
<div class="md-note" role="note" data-kind="example"><p><strong>Example:</strong> Earn 1 point for every Rp10,000 you spend. Trade 20 points for 1 Kopi Susu Aren. Points expire if you don&#39;t buy anything for 6 months. Promo and bundle prices don&#39;t earn points. We use your phone number only to keep track of your points.</p>
</div>
<h2 id="signing-up-members-with-consent">Signing up members with consent</h2>
<p>Give every cashier the same lines. Explain the rules before the customer agrees, for example:</p>
<ul role="list">
<li>Cashier: &quot;Would you like to sign up as a member? You get 1 point for every Rp10,000, and 20 points gets you a free Kopi Susu Aren. Your points expire if you don&#39;t buy anything for 6 months. All I need is your name and phone number, and we only use the number for your points.&quot;</li>
<li>Customer: &quot;Sure.&quot;</li>
</ul>
<p>Ask only for what you need to keep track of points: a name, so the cashier can confirm who it is, and a phone number, so the member can be looked up without a card. Don&#39;t ask for an address, a date of birth, or an ID card number. If a customer says no, just move on to payment.</p>
<p>Agreeing to be a member isn&#39;t agreeing to receive promotions. Don&#39;t add members&#39; numbers to a broadcast list or a WhatsApp group without separate permission. How to ask for it is in the <a href="https://kazeer.ai/en/blog/bring-customers-back-whatsapp/">guide to bringing customers back through WhatsApp</a>.</p>
<p>Kazeer has a members and points feature. Staff sign members up with the customer&#39;s consent. An order that records the customer&#39;s phone number also saves their customer record automatically, but that isn&#39;t permission to send promotions either. Before you print the rules card, ask the Kazeer team which of these rules the points feature can apply, such as expiry and purchases that don&#39;t earn points.</p>
<h2 id="getting-cashiers-to-ask-every-time">Getting cashiers to ask every time</h2>
<p>A points program only works if the cashier asks at every transaction. Customers who go unasked a few times may think the program has ended.</p>
<p>Ask after the order is entered and before payment. If the cashier also offers an add-on, as in the <a href="https://kazeer.ai/en/blog/raise-average-spend/">article on average spend</a>, offer that first, then ask about membership.</p>
<p>Before day one, have every cashier and waiter practice the lines in pairs until each of them can explain the rules card without reading it. For new cashiers, add it to the plan in the <a href="https://kazeer.ai/en/blog/training-a-new-cashier/">guide to training a new cashier</a>.</p>
<p>Once the program is running, keep a tally sheet at the counter: one mark for every member transaction, and the member&#39;s name for every reward traded in. At the end of the week, compare shifts with similar traffic, then ask the cashier on any shift with far fewer member transactions what&#39;s getting in the way. Judge cashiers by whether they ask, not by how many people sign up.</p>
<h2 id="judging-the-results-after-a-few-weeks">Judging the results after a few weeks</h2>
<p>Compare the four weeks before the program with weeks 5 to 8, because in the first weeks new members haven&#39;t had time to come back. Use full weeks, and leave out unusual days, such as long holidays.</p>
<p>Worked example:</p>
<div class="md-table" role="region" tabindex="0" aria-label="Judging the results after a few weeks (table, scrollable)"><table><thead><tr><th scope="col">Daily average</th><th scope="col" style="text-align:right">Before the program</th><th scope="col" style="text-align:right">Weeks 5 to 8</th><th scope="col">Change</th></tr></thead><tbody><tr><td>Transactions</td><td style="text-align:right">186</td><td style="text-align:right">200</td><td>up 14</td></tr><tr><td>Member transactions</td><td style="text-align:right">0</td><td style="text-align:right">50</td><td>up 50</td></tr><tr><td>Sales</td><td style="text-align:right">Rp4,250,000</td><td style="text-align:right">Rp4,600,000</td><td>up Rp350,000</td></tr><tr><td>Average spend</td><td style="text-align:right">Rp22,849</td><td style="text-align:right">Rp23,000</td><td>up Rp151</td></tr><tr><td>Gross profit</td><td style="text-align:right">Rp2,550,000</td><td style="text-align:right">Rp2,760,000</td><td>up Rp210,000</td></tr></tbody></table></div>
<p>How to read it:</p>
<ul role="list">
<li>Members make 50 of the 200 transactions a day, or 25%. That doesn&#39;t mean 50 extra visits, because many members are regulars who were already coming in. The real increase shows in total transactions: up 14 a day.</li>
<li>Say the tally sheet for week 8 shows 350 member transactions, and there are 175 members at the end of that week: that&#39;s 350 ÷ 175 = 2 visits per member that week on average.</li>
<li>Average spend went up a little. If it drops, the extra visits may only be small purchases.</li>
<li>The COGS percentage is 40% in both periods, and gross profit is up Rp210,000 a day. Five free cups are traded in each day, and in this example the free cups aren&#39;t recorded as orders, so they aren&#39;t in the table. The sales lost to rewards already show in the sales figure, so you only subtract the ingredients: 5 × Rp8,400 = Rp42,000. Extra gross profit after rewards: Rp210,000 − Rp42,000 = Rp168,000 a day.</li>
</ul>
<p>Not all of that increase is necessarily down to the program: weather, school holidays, a new menu item, or an event near the outlet also move the numbers.</p>
<p>Free cups that aren&#39;t recorded as orders also don&#39;t take any ingredients off the stock in your records. At your <a href="https://kazeer.ai/en/blog/monthly-stock-count/">stock count</a>, count the ingredients for the free cups on the counter tally sheet as usage, so they don&#39;t read as missing stock. If your reports record a reward as a Rp0 sale with its COGS, don&#39;t subtract it twice. Subtract extra costs too, such as printing the rules card.</p>
<p>In Kazeer, sales, COGS, and gross profit are in your reports, and the member customer list can be exported as a CSV file. Export it at the end of each week, then count your members from the rows. How to read the daily transaction count is in the <a href="https://kazeer.ai/en/blog/daily-sales-report/">guide to the daily sales report</a>. <a href="https://kazeer.ai/en/#reports">See an example of the reports</a>.</p>
<p>The number that decides it is the extra gross profit after the cost of the rewards. If it isn&#39;t positive, change the rules or end the program, with notice first. If total transactions don&#39;t go up, check whether the rewards are only going to customers who were already coming in.</p>
<h2 id="common-mistakes">Common mistakes</h2>
<ul role="list">
<li>The rules are too complicated, for example member tiers or different points per menu item. Cashiers struggle to explain them.</li>
<li>Points never expire. Every point not yet traded in is a promise of a reward that can be claimed at any time. Say 300 members each hold 20 points: that&#39;s 300 free cups, or 300 × Rp8,400 = Rp2,520,000 in COGS, and up to 300 × Rp22,000 = Rp6,600,000 if every one of them replaces a purchase.</li>
<li>The rules change without warning. If you need to cut back the reward, announce it on the rules card a few weeks ahead, and let members trade in the points they&#39;ve already collected under the old rules.</li>
</ul>
]]></content:encoded>
      <category>Marketing</category>
      <dc:creator>The Kazeer team</dc:creator>
      <pubDate>Wed, 21 Oct 2026 00:00:00 GMT</pubDate>
      <enclosure url="https://kazeer.ai/img/blog/member-poin-og.jpg" length="83139" type="image/jpeg" />
    </item>
    <item>
      <title>How to manage table reservations without empty tables or turned-away walk-ins</title>
      <link>https://kazeer.ai/en/blog/managing-table-reservations/</link>
      <guid isPermaLink="true">https://kazeer.ai/en/blog/managing-table-reservations/</guid>
      <description>Write down your reservation rules, keep every reservation on one list, confirm the day before, and keep tables free for guests who walk in.</description>
      <content:encoded><![CDATA[<p>Picture this: it&#39;s Saturday night at your cafe. Since 18:30, a waiter has been holding the long table by the window for a reservation of eight at 19:00. In that half hour, two groups walk in without a reservation and have to leave because there&#39;s no table for them. At 19:30 the group still hasn&#39;t arrived, and nobody picks up the phone.</p>
<p>Reservations only help when every guest gets the same rules and every reservation is written down in one place.</p>
<h2 id="set-the-rules-first">Set the rules first</h2>
<p>If each staff member answers with their own rules, one guest is told the table is held for an hour and another for ten minutes. Write the rules once and use them for every reservation. What to decide:</p>
<ul role="list">
<li>Which days and hours you take reservations. You can choose not to take them at your busiest hour, or to take them only for groups.</li>
<li>The smallest party you take, say 4 people, and the size you count as a large group, say more than 10.</li>
<li>How long you hold a table after the booked time, say 15 minutes. After that, you can give the table to other guests.</li>
<li>Whether large groups make a down payment or choose their food in advance. If you take a down payment, also decide when it&#39;s returned, for example if the guest cancels at least a day ahead.</li>
</ul>
<p>Tell guests these rules when they book, before they make any down payment. To keep every staff member&#39;s answer the same, save the rules as a quick reply in WhatsApp Business and put them up near the counter.</p>
<div class="md-note" role="note" data-kind="example"><p><strong>Example:</strong> We take reservations for 4 people or more. We hold the table for 15 minutes after the booked time. For groups of more than 10, please choose your food by the day before.</p>
</div>
<p>If an <a href="https://kazeer.ai/en/blog/meta-business-agent-on-whatsapp/">AI agent in WhatsApp Business</a> answers your customer chats, add these rules to what it knows too.</p>
<h2 id="keep-every-reservation-in-one-place">Keep every reservation in one place</h2>
<p>Reservations come in from all directions: WhatsApp chats, phone calls, Instagram DMs, or in person at the counter. If each one is written down somewhere different, one table can be promised to two groups, or the evening shift doesn&#39;t know a group is coming.</p>
<p>Pick one list, such as a reservation book at the counter or an app, and use nothing else. Whoever takes a reservation writes it on that list first, then tells the guest it&#39;s booked.</p>
<div class="md-table" role="region" tabindex="0" aria-label="Keep every reservation in one place (table, scrollable)"><table><thead><tr><th scope="col">What to record</th><th scope="col">Why</th></tr></thead><tbody><tr><td>Name</td><td>To greet the guest and find the reservation when they arrive</td></tr><tr><td>WhatsApp number</td><td>To send the confirmation and reach a guest who is late</td></tr><tr><td>Number of guests</td><td>To pick the right table</td></tr><tr><td>Date and time</td><td>To know when to start holding the table</td></tr><tr><td>Note</td><td>A birthday, an allergy, a high chair, or a seating wish such as near the window</td></tr><tr><td>Down payment, if any</td><td>Amount, date, and how it was paid, so the cashier takes it off the bill</td></tr><tr><td>Staff member who took it</td><td>To know who to ask if something is unclear</td></tr></tbody></table></div>
<p>On the day, pass any allergy note to the kitchen before the guest arrives.</p>
<p>A guest&#39;s WhatsApp number is personal data. A reservation in Kazeer stores it too, along with the name, number of guests, and a note. Use the number only for that reservation, unless the guest agrees to other messages. Messages about new menu items or promotions need the guest&#39;s separate permission, and our <a href="https://kazeer.ai/en/blog/bring-customers-back-whatsapp/">guide to bringing customers back through WhatsApp</a> explains how to ask for it.</p>
<h2 id="confirm-the-day-before">Confirm the day before</h2>
<p>The day before, send a confirmation from the outlet&#39;s WhatsApp number. For a reservation made at short notice, send it that morning. Make one person, such as the afternoon cashier, responsible for confirming all of tomorrow&#39;s reservations.</p>
<div class="md-note" role="note" data-kind="example"><p><strong>Example:</strong> Hi [name], this is [cafe name]. We&#39;d like to confirm your reservation for [number] people tomorrow, [day, date], at [time]. We&#39;ll hold the table for 15 minutes after that time. If the number of people or the time changes, or you need to cancel, just reply to this message. Thank you.</p>
</div>
<p>Mark on the list who has replied. If a guest still hasn&#39;t replied a few hours before the booked time, call them once. If the number of people changes, update the list and check the table again. If a guest cancels, write &quot;cancelled&quot; and free the table for other guests.</p>
<h2 id="split-your-tables-at-peak-hours">Split your tables at peak hours</h2>
<p>If every table at peak hours can be reserved, guests who walk in may find nowhere to sit. Decide how many tables can be reserved at those hours, and keep the rest for walk-ins. To find your busy hours, note your sales every hour for two weeks and watch when every table is taken. The <a href="https://kazeer.ai/en/blog/shift-schedule-busy-hours/">guide to shift schedules</a> shows how.</p>
<p>Worked example for a cafe with 10 tables:</p>
<div class="md-table" role="region" tabindex="0" aria-label="Split your tables at peak hours (table, scrollable)"><table><thead><tr><th scope="col">Table</th><th scope="col" style="text-align:right">Number of tables</th><th scope="col" style="text-align:right">Seats</th></tr></thead><tbody><tr><td>4-seat table</td><td style="text-align:right">6</td><td style="text-align:right">24</td></tr><tr><td>2-seat table</td><td style="text-align:right">4</td><td style="text-align:right">8</td></tr><tr><td>Total</td><td style="text-align:right">10</td><td style="text-align:right">32</td></tr></tbody></table></div>
<p>Every Saturday from 18:00 to 21:00, this cafe takes reservations for at most 4 of its 4-seat tables, which is 4 × 4 = 16 seats. The rest, 2 of the 4-seat tables and all 4 of the 2-seat tables (8 + 8 = 16 seats), or half of all seats, stay for walk-ins.</p>
<p>A reserved table doesn&#39;t need to sit empty all afternoon, either. Say guests usually stay about 90 minutes, and a table takes 15 minutes to clear. A table reserved for 19:00 can still take walk-ins who sit down before 17:15, which is 90 + 15 = 105 minutes before 19:00. Tell those guests from the start that the table is needed again at 19:00. At 17:15, when you start holding the table, put out the &quot;Reserved 19:00&quot; card. Walk-ins who arrive after that can still sit there if they agree to finish by 18:45.</p>
<h2 id="late-guests-and-no-shows">Late guests and no-shows</h2>
<p>Use the hold time in your rules, then go through these steps:</p>
<ol>
<li>When the booked time passes and the guest hasn&#39;t arrived, send one message or make one call: &quot;Hi [name], we&#39;re still holding your table for [number] until [time]. Are you still coming?&quot;</li>
<li>If the guest says they&#39;ll be late, the shift lead decides whether to hold the table longer, then tells them politely until what time.</li>
<li>If the hold time passes with no word, give the table to guests who are waiting, then write &quot;no-show&quot; on the list.</li>
<li>If the guest arrives after the table has gone, apologize, explain the hold time, then offer the next free table.</li>
</ol>
<p>What to say in that last step: &quot;I&#39;m sorry, we held your table until 19:15 and then gave it to other guests. The next table should be free in about 20 minutes. Can I put you on the waiting list?&quot;</p>
<p>You can ask guests who have skipped several reservations without a word to make a down payment for their next reservation, as long as you tell them when they book.</p>
<h2 id="large-groups">Large groups</h2>
<p>A group of 12 ordering all at once can put the kitchen behind for every other table. There are two ways to prevent that. One is a set menu: one fixed package at a price per person, agreed before the day. You can set bundle prices in Kazeer&#39;s promo feature. The other is ordering ahead: the group chooses its food by the day before, so the kitchen can prepare the ingredients and the number of portions.</p>
<p>When the group arrives, the cashier records the food they ordered ahead as that table&#39;s order, so the cashier and the kitchen read the same order. The <a href="https://kazeer.ai/en/blog/kitchen-order-flow/">guide to the cashier to kitchen order flow</a> covers the steps.</p>
<p>Ask about the bill at the start: one bill, or does each person pay their own? If they pay separately, record orders per person from the start. Splitting one big bill at the end makes a line at the counter and is easy to get wrong. If the group makes a down payment, give them proof when they pay, then take it off the final bill.</p>
<p>If your outlet uses <a href="https://kazeer.ai/en/blog/table-qr-ordering/">table QR ordering</a>, the group can add orders themselves without waiting for a waiter. That guide also has tips for tables pushed together.</p>
<h2 id="check-the-results-every-week">Check the results every week</h2>
<p>Once a week, go through the reservation list and count how many reservations the guests kept, how many they cancelled with notice, and how many were no-shows with no word. Ask the cashier to also note walk-in groups turned away because you were full, with simple tally marks on a sheet of paper.</p>
<p>Worked example from one week at a cafe:</p>
<div class="md-table" role="region" tabindex="0" aria-label="Check the results every week (table, scrollable)"><table><thead><tr><th scope="col">What you count</th><th scope="col" style="text-align:right">Number</th></tr></thead><tbody><tr><td>Reservations</td><td style="text-align:right">20</td></tr><tr><td>Came</td><td style="text-align:right">15</td></tr><tr><td>Cancelled with notice</td><td style="text-align:right">2</td></tr><tr><td>No-show, no notice</td><td style="text-align:right">3</td></tr><tr><td>Walk-in groups turned away when full</td><td style="text-align:right">6</td></tr></tbody></table></div>
<p>No-show rate: 3 ÷ 20 = 15%. Those three reservations were for 4, 6, and 4 people, so 14 seats were held empty until the hold time ran out.</p>
<p>How to read it:</p>
<ul role="list">
<li>If most no-shows never replied to the confirmation, release reservations whose guests haven&#39;t replied by a set time, and say so in the confirmation message.</li>
<li>If most no-shows are large groups, ask large groups to order ahead or make a down payment.</li>
<li>If many walk-in groups are turned away at peak hours while reserved tables often sit empty, cut the number of tables that can be reserved at those hours.</li>
</ul>
<p>Change one rule at a time, then compare the results with the week before.</p>
]]></content:encoded>
      <category>Operations</category>
      <dc:creator>The Kazeer team</dc:creator>
      <pubDate>Wed, 21 Oct 2026 00:00:00 GMT</pubDate>
      <enclosure url="https://kazeer.ai/img/blog/reservasi-meja-og.jpg" length="80307" type="image/jpeg" />
    </item>
    <item>
      <title>How to choose and compare suppliers for ingredients and packaging</title>
      <link>https://kazeer.ai/en/blog/choosing-and-comparing-suppliers/</link>
      <guid isPermaLink="true">https://kazeer.ai/en/blog/choosing-and-comparing-suppliers/</guid>
      <description>Work out the cost per usable unit, test quality with trial orders, then keep all your suppliers on one sheet.</description>
      <content:encoded><![CDATA[<p>Picture this: a new supplier offers UHT milk at Rp17,000 a liter, Rp1,000 less than your current supplier. Then it turns out there&#39;s a Rp30,000 delivery charge every time they deliver, and for the amount you usually order, the cost per liter actually comes out higher.</p>
<p>The price on a supplier&#39;s price list is only one number. Compare the cost of what you actually use, then quality, delivery schedules, and payment terms. You can record the results on one supplier sheet.</p>
<h2 id="compare-the-cost-per-usable-unit">Compare the cost per usable unit</h2>
<p>Pack sizes, delivery charges, and minimum orders make prices per pack hard to compare. Convert everything to a cost per unit you use in your recipes, such as per liter, per kg, or per piece for cups and lids:</p>
<ul role="list">
<li>Cost per usable unit = (price of the goods + delivery charge) ÷ the amount you actually use</li>
</ul>
<p>If one delivery charge covers several items, split it by each item&#39;s share of the order value.</p>
<p>Worked example for an order of 2 cases of UHT milk, 12 one-liter cartons each, using the sample price from the <a href="https://kazeer.ai/en/blog/cogs-per-menu-item/">guide to COGS (cost of goods sold) per menu item</a>:</p>
<div class="md-table" role="region" tabindex="0" aria-label="Compare the cost per usable unit (table, scrollable)"><table><thead><tr><td></td><th scope="col" style="text-align:right">Supplier A (current)</th><th scope="col" style="text-align:right">Supplier B (new)</th></tr></thead><tbody><tr><th scope="row">Price per liter on the price list</th><td style="text-align:right">Rp18,000</td><td style="text-align:right">Rp17,000</td></tr><tr><th scope="row">Price of 2 cases (24 liters)</th><td style="text-align:right">Rp432,000</td><td style="text-align:right">Rp408,000</td></tr><tr><th scope="row">Delivery charge</th><td style="text-align:right">Rp0</td><td style="text-align:right">Rp30,000</td></tr><tr><th scope="row">Total paid</th><td style="text-align:right">Rp432,000</td><td style="text-align:right">Rp438,000</td></tr><tr><th scope="row">Cost per liter</th><td style="text-align:right">Rp18,000</td><td style="text-align:right">Rp18,250</td></tr></tbody></table></div>
<p>Supplier B is Rp1,000 a liter cheaper on the price list, but Rp250 a liter more expensive once you add delivery: Rp438,000 ÷ 24 = Rp18,250. If you order 4 cases per delivery, the math changes. Four cases cost Rp816,000, delivery brings it to Rp846,000, and divided by 48 liters that&#39;s Rp17,625 per liter. An order that size only pays off if you use all 48 liters before they expire and you have room to store them.</p>
<p>Minimum orders work the same way. If a supplier requires 5 kg per order but you only use 4 kg before the rest spoils, divide the price by 4 kg, not 5 kg.</p>
<p>For vegetables, fruit, meat, and chicken, also count what you lose in trimming. Weigh the goods before trimming, trim them as usual, then weigh the part you use. The usable weight divided by the starting weight is your yield. Repeat it over two or three deliveries, because the result can vary.</p>
<p>Worked example for chicken breast:</p>
<div class="md-table" role="region" tabindex="0" aria-label="Compare the cost per usable unit (table, scrollable) (2)"><table><thead><tr><td></td><th scope="col" style="text-align:right">Bone-in chicken breast, Supplier C</th><th scope="col" style="text-align:right">Chicken breast fillet, Supplier D</th></tr></thead><tbody><tr><th scope="row">Price per kg</th><td style="text-align:right">Rp45,500</td><td style="text-align:right">Rp57,000</td></tr><tr><th scope="row">Usable from 1 kg after trimming</th><td style="text-align:right">700 g (70%)</td><td style="text-align:right">950 g (95%)</td></tr><tr><th scope="row">Cost per usable kg</th><td style="text-align:right">Rp65,000</td><td style="text-align:right">Rp60,000</td></tr></tbody></table></div>
<p>Rp45,500 ÷ 0.7 = Rp65,000 and Rp57,000 ÷ 0.95 = Rp60,000. The fillet that looks Rp11,500 a kg more expensive is actually Rp5,000 cheaper for every kg that reaches the plate, and your cook doesn&#39;t have to take off the bone and skin.</p>
<h2 id="test-quality-with-trial-orders">Test quality with trial orders</h2>
<p>Comparing costs is only fair if the quality is the same. Before you switch, place two or three small orders, each enough for a few days.</p>
<ol>
<li>Make the menu items that use the ingredient with the same recipe, then taste them side by side with the version from your current supplier. Ask your barista or cook to taste too.</li>
<li>For anything sold by the kg, weigh a few packs and compare with the weight on the receipt.</li>
<li>Check that size, ripeness, and brand are the same in every delivery. For cups and lids, fill a few cups with a cold drink: the lids should fit tightly and the cups shouldn&#39;t leak.</li>
<li>Decide after several deliveries, not one. The first delivery doesn&#39;t always match the ones that follow.</li>
</ol>
<p>How to check packaging, the temperature of chilled goods, and expiry dates when a delivery arrives is in the <a href="https://kazeer.ai/en/blog/fifo-ingredient-stock/">FIFO and FEFO guide</a>. Use the same checks for your old and new supplier.</p>
<h2 id="ask-about-deliveries-up-front">Ask about deliveries up front</h2>
<p>A cheap supplier that&#39;s often late sends you out on rush buys at retail prices. Ask these before you order:</p>
<ul role="list">
<li>Which days the supplier delivers, and what time the goods usually arrive.</li>
<li>The order cut-off time. If you order after it, the supplier usually delivers on the next scheduled run.</li>
<li>The lead time, from placing an order to the delivery arriving. You use this number to set your minimum stock, as in the <a href="https://kazeer.ai/en/blog/daily-ingredient-stock-check/">guide to the daily stock check</a>. The longer the lead time, the more stock you have to keep.</li>
<li>What happens when an item is out of stock. Does the supplier tell you before delivering, or swap in another brand without asking?</li>
</ul>
<p>Ask the supplier to check with you before swapping brands, because another brand can change the taste of a menu item and its COGS.</p>
<p>For the first month, note every delivery: on time or late, complete or short, and whether the supplier substituted anything.</p>
<h2 id="agree-on-payment-and-receipts">Agree on payment and receipts</h2>
<p>Some suppliers want payment when the goods arrive, and others give you credit terms, say two weeks after delivery. Credit helps when cash is tight, but write down what you owe and the due date so it doesn&#39;t pile up. Also ask whether the price is the same for paying on delivery and paying on credit.</p>
<p>Agree in writing, for example in a WhatsApp chat: the price per unit, how you&#39;ll pay, the length of the credit term, and how many days&#39; notice the supplier gives before a price rise.</p>
<p>Ask for a receipt with every delivery, showing the date, item names, quantities, unit prices, and the total. A receipt without a price per item makes it hard to work out your COGS. Before you pay, check the prices on the receipt against the agreed prices, then keep the receipts and transfer slips in one folder per month.</p>
<h2 id="keep-a-backup-supplier">Keep a backup supplier</h2>
<p>For the items your best sellers can&#39;t be made without, the ones on your daily count list, line up a second supplier before you need one.</p>
<ul role="list">
<li>Test the backup supplier with trial orders, just like your main one.</li>
<li>Order from them now and then, so you know their latest prices and they know your business.</li>
<li>For ingredients that set the taste, such as milk and coffee beans, look for a backup that sells the same brand.</li>
<li>Work out their cost per usable unit too, so you know how much your COGS rises if you have to use them.</li>
</ul>
<h2 id="one-sheet-for-all-your-suppliers">One sheet for all your suppliers</h2>
<p>Record what you compared on one sheet, on paper or in a spreadsheet. A sample supplier sheet, with costs from the worked examples above:</p>
<div class="md-table" role="region" tabindex="0" aria-label="One sheet for all your suppliers (table, scrollable)"><table><thead><tr><th scope="col">Item</th><th scope="col">Supplier</th><th scope="col" style="text-align:right">Cost per usable unit</th><th scope="col">Minimum order</th><th scope="col">Delivery days</th><th scope="col">Contact</th></tr></thead><tbody><tr><td>UHT milk</td><td>A (main)</td><td style="text-align:right">Rp18,000/liter</td><td>2 cases</td><td>Monday, Thursday</td><td>WhatsApp number</td></tr><tr><td>UHT milk</td><td>B (backup)</td><td style="text-align:right">Rp18,250/liter</td><td>2 cases</td><td>Every day</td><td>WhatsApp number</td></tr><tr><td>Chicken breast fillet</td><td>D (main)</td><td style="text-align:right">Rp60,000/kg</td><td>3 kg</td><td>Tuesday, Friday</td><td>WhatsApp number</td></tr></tbody></table></div>
<p>Review the sheet whenever a receipt shows a new price, and at your <a href="https://kazeer.ai/en/blog/monthly-stock-count/">monthly stock count</a>. For the items you buy most, ask one or two other suppliers for their price lists every few months, then run the numbers again.</p>
<p>If you have more than one outlet, use one sheet for all of them. A combined order reaches the minimum more easily, and as the milk example showed, the delivery charge per liter drops when the order is bigger. Ask whether the supplier can deliver to each outlet and what that costs. The other option is for one outlet to receive the delivery and pass stock on to the others. In Kazeer, you manage stock per outlet, so every time stock goes to another outlet, move it in Kazeer too.</p>
<h2 id="after-a-switch-or-a-price-rise">After a switch or a price rise</h2>
<p>A change of supplier or a price rise can change the COGS of the menu items that use that ingredient.</p>
<ol>
<li>Recalculate the COGS of those items with the new cost per usable unit. The method is in the <a href="https://kazeer.ai/en/blog/cogs-per-menu-item/">guide to COGS per menu item</a>.</li>
<li>If the brand changed, taste-test and adjust the amounts in the recipe if needed. Palm sugar syrup from another supplier, for example, may be less sweet and need a bigger pour.</li>
<li>If your COGS percentage goes over your target, your options are in the <a href="https://kazeer.ai/en/blog/menu-pricing-from-cogs/">article on setting menu prices</a>.</li>
<li>For the first two weeks, count that ingredient more often, so you know whether usage matches what you expected.</li>
</ol>
<p>If you use Kazeer, COGS per menu item can be calculated from the recipe, so make sure the recipe follows the new amounts. After a price rise, compare those items&#39; COGS in Kazeer with your own numbers from step 1. If they don&#39;t match yet, ask the Kazeer team how to update them.</p>
<p>Ingredient stock goes down automatically with each sale. If your physical count is lower than the stock Kazeer shows, and the gap grows after a switch, check that ingredient&#39;s yield, the delivered weight against the receipt, and the recipe amounts again. After a transaction, Kazeer AI sends a low-stock or out-of-stock alert to the owner and store admins, so you know when to contact a supplier. Automatic ingredient orders to suppliers over WhatsApp are coming soon.</p>
<p>Start with the item you buy most: work out its cost per usable unit from your latest receipt, then fill in the first row of your supplier sheet.</p>
]]></content:encoded>
      <category>Stock</category>
      <dc:creator>The Kazeer team</dc:creator>
      <pubDate>Wed, 21 Oct 2026 00:00:00 GMT</pubDate>
      <enclosure url="https://kazeer.ai/img/blog/memilih-suplier-og.jpg" length="101318" type="image/jpeg" />
    </item>
    <item>
      <title>Table QR ordering: how to start without missing a bill</title>
      <link>https://kazeer.ai/en/blog/table-qr-ordering/</link>
      <guid isPermaLink="true">https://kazeer.ai/en/blog/table-qr-ordering/</guid>
      <description>Guests scan a QR code at the table and order on their own. Here&#39;s what to prepare, and how to make sure every order still gets paid.</description>
      <content:encoded><![CDATA[<p>Picture this: it&#39;s seven in the evening at your cafe. Every table is taken, only two waiters are on shift, and the guests at Table 8 have waved twice because they want another round of drinks. If they could order on their own phones through a QR code on the table, the order would go in without waiting for a waiter to walk by.</p>
<p>Table QR ordering takes work off your waiters at busy times, as long as you set it up properly. The part that&#39;s easiest to miss is orders paid later at the cashier, because they stay open until someone collects the payment.</p>
<h2 id="is-it-right-for-your-business">Is it right for your business?</h2>
<p>QR ordering helps most when guests stay a while and often order more than once, say at a cafe where people work or chat.</p>
<p>It suits you less, or needs adjusting, if:</p>
<ul role="list">
<li>Most guests order at the counter and take their food away. The QR codes on the tables will rarely get used.</li>
<li>Guests pick dishes straight from a display, as at a warung prasmanan (a buffet-style warung). Pointing at a dish is faster than finding it on a phone.</li>
<li>The signal in your seating area is weak. Guests order on an online page, so their phones need internet. If you have guest Wi-Fi, print the network name and password on the table card.</li>
</ul>
<p>Guests who don&#39;t want to scan can still order through a waiter or the cashier, as usual.</p>
<h2 id="what-the-guest-does-at-the-table">What the guest does at the table</h2>
<p>In Kazeer, the guest scans the QR code on their table, then orders on your store&#39;s online page. Besides choosing items and entering a voucher if they have one, the guest fills in the following:</p>
<div class="md-table" role="region" tabindex="0" aria-label="What the guest does at the table (table, scrollable)"><table><thead><tr><th scope="col">What the guest fills in</th><th scope="col">What to keep in mind</th></tr></thead><tbody><tr><td>Name</td><td>Helps make sure the order reaches the right person.</td></tr><tr><td>WhatsApp number</td><td>The guest&#39;s personal data. Use it only for what the guest agreed to.</td></tr><tr><td>Table number</td><td>Filled in from the QR code. A QR code on the wrong table sends the food to the wrong table.</td></tr><tr><td>Payment choice</td><td>Pay at the cashier, QRIS, virtual account, or e-wallet, depending on what you allow.</td></tr></tbody></table></div>
<h2 id="prepare-these-first">Prepare these first</h2>
<h3 id="which-payment-choices-you-allow">Which payment choices you allow</h3>
<p>With online payment, the guest pays from their phone. Pay at the cashier gives guests who want to pay in cash or by card a way to order from the table, but someone has to collect the payment later.</p>
<p>If you only allow online payment, guests without an e-wallet or mobile banking need to order through a waiter or the cashier. Also ask the Kazeer team what each online payment choice costs, if anything, and when the money reaches your withdrawal account.</p>
<h3 id="table-numbers-and-where-the-qr-codes-go">Table numbers and where the QR codes go</h3>
<p>Give every table its own number, put the number on the table, and make sure it matches the table number in that table&#39;s QR code. If two tables are pushed together for a group, ask them to order from one QR code only, so their orders don&#39;t get split.</p>
<p>Put the QR code where it can be scanned from a seat, not covered by plates or a napkin holder, and well lit at night. Lamination or an acrylic stand protects it from spills. Keep a spare set of QR codes near the cashier.</p>
<p>Every morning, make sure nobody has stuck another QR code sticker over yours, because a fake code can send guests to someone else&#39;s payment page.</p>
<h3 id="item-names-that-work-without-a-waiter">Item names that work without a waiter</h3>
<p>At the counter, a guest can ask what&#39;s in an item. On a phone, they can only read. Open the ordering page on your phone and read the menu like a new guest. Things that usually need fixing:</p>
<ul role="list">
<li>Abbreviations only staff understand, or names that don&#39;t say what&#39;s in them, like KSA or Kopi Kita. Write them out and add the main ingredients: Kopi Susu Aren, Kopi Kita (espresso, milk, caramel).</li>
<li>Spicy items, or items with peanuts or shrimp. Say so in the name, because a guest ordering on their own doesn&#39;t get a reminder from a waiter.</li>
</ul>
<h2 id="when-an-order-comes-in">When an order comes in</h2>
<p>An order from a table QR code goes to the kitchen just like an order taken at the cashier, so the cashier and the kitchen read the same order. What the kitchen statuses mean is in the <a href="https://kazeer.ai/en/blog/kitchen-order-flow/">guide to the cashier to kitchen order flow</a>.</p>
<p>Payment status and kitchen status are separate. A Dine-in order stays Unpaid through Waiting, Cooking, and Served, so an order that has been served isn&#39;t necessarily paid.</p>
<p>In Kazeer, each staff member has their own login, with a role such as Cashier, Kitchen staff, or Waiter. For table orders, decide on every shift:</p>
<ol>
<li>Who checks new table orders. These orders don&#39;t pass through a waiter, so odd ones need spotting quickly, say ten portions from a table for two. Check with that table before the kitchen cooks it. An unpaid order can be cancelled, from the kitchen screen too.</li>
<li>Who serves. Match the table number first, then say the guest&#39;s name recorded on the order before putting the plates down.</li>
<li>Who walks the floor to help guests who have trouble scanning, and to replace QR codes that are wet or missing.</li>
<li>Who reminds guests to pay at the cashier before they leave.</li>
</ol>
<h2 id="orders-paid-at-the-cashier">Orders paid at the cashier</h2>
<p>An order set to pay at the cashier stays Unpaid, however long the guests sit, until the cashier records the payment on that order. If one table ordered more than once, or each guest ordered separately, check every Unpaid order from that table before the guests leave.</p>
<p>A cashier shift can be closed while orders are still unpaid. Those orders aren&#39;t counted as revenue, and they show as &quot;BELUM BAYAR&quot; (Unpaid) in the shift details. So before closing a shift, the cashier goes through every Unpaid order.</p>
<div class="md-note" role="note" data-kind="example"><p><strong>Example:</strong> The afternoon shift is about to close, and three table orders are still Unpaid.</p>
</div>
<div class="md-table" role="region" tabindex="0" aria-label="Orders paid at the cashier (table, scrollable)"><table><thead><tr><th scope="col">Table</th><th scope="col" style="text-align:right">Total</th><th scope="col">What really happened</th><th scope="col">What to do</th></tr></thead><tbody><tr><td>3</td><td style="text-align:right">Rp54,000</td><td>The guests are still seated</td><td>Collect first, or write in the handover notes who will collect</td></tr><tr><td>5</td><td style="text-align:right">Rp68,000</td><td>The guest paid cash, but it wasn&#39;t recorded</td><td>Record the payment now</td></tr><tr><td>9</td><td style="text-align:right">Rp41,000</td><td>A duplicate order, and the first one is already paid</td><td>Cancel the duplicate. The cancellation stays visible in the records</td></tr></tbody></table></div>
<p>Only Tables 3 and 5 are real sales: Rp54,000 + Rp68,000 = Rp122,000. If the shift is closed without this check, that Rp122,000 isn&#39;t counted in the shift&#39;s revenue, and the bill for Table 3 can be missed if the guests leave without anyone collecting. The drawer also holds Rp68,000 more than the cash on record, and the duplicate for Table 9 (Rp41,000) still looks like an unpaid bill.</p>
<p>If a guest leaves without paying, the order stays Unpaid. Decide from the start who makes the call to cancel it, and have the cashier write the reason in the cancellation book, because Kazeer doesn&#39;t ask for one. How to match the money at the end of the day is in the <a href="https://kazeer.ai/en/blog/end-of-day-cash-up/">guide to the end-of-day cash-up</a>.</p>
<h2 id="the-table-card-and-the-guests-whatsapp-number">The table card and the guest&#39;s WhatsApp number</h2>
<p>A small card next to the QR code helps guests who are using it for the first time. Match the payment choices on the card to the ones you allow.</p>
<div class="md-note" role="note" data-kind="example"><p><strong>Example:</strong> Order from this table. Scan the QR code, choose your items, then enter your name and WhatsApp number. The table number fills itself in. Pay from your phone by QRIS or e-wallet, or choose to pay at the cashier before you leave. We won&#39;t send promotions to this number without your permission. Need help? Call one of our waiters.</p>
</div>
<p>The line about the WhatsApp number is your promise to the guest, so keep it. In Kazeer, an order that records a phone number saves a customer record automatically, so the guest&#39;s number can stay on file after they leave. The promise applies later too. Don&#39;t add numbers from orders to a broadcast list or a promo group. For news about new menu items, ask for permission separately. How to do that is in the <a href="https://kazeer.ai/en/blog/bring-customers-back-whatsapp/">guide to bringing customers back through WhatsApp</a>.</p>
<p>If the table card also carries a WhatsApp QR code for menu news, put a heading above each code, say &quot;Order here&quot; and &quot;Menu news&quot;.</p>
<h2 id="first-week-checklist">First-week checklist</h2>
<p>Start on a weekday that&#39;s usually quiet, so your team can get used to it before the weekend.</p>
<p>Before day one:</p>
<ol>
<li>Scan every QR code and check that the table number filled in matches the number on that table.</li>
<li>Tell the kitchen first so they don&#39;t cook the test order, then place an order with pay at the cashier and cancel it.</li>
<li>To try online payment, order one low-priced item, pay for real, and treat it as a normal sale, because a paid order can&#39;t be cancelled.</li>
<li>Read the menu on your phone and fix any confusing names.</li>
<li>Tell all your staff which payment choices you allow and who does what on each shift.</li>
</ol>
<p>Every day in the first week:</p>
<ol>
<li>Before closing a shift, check all Unpaid orders.</li>
<li>Write down the questions guests ask about the menu, and any order that reached the wrong table, then fix the item name or check that table&#39;s QR code.</li>
</ol>
<p>To judge the effect on sales, use the <a href="https://kazeer.ai/en/blog/raise-average-spend/">guide to average spend</a>. Be careful: if each guest pays separately, one table of four can become four transactions, and the average spend per transaction drops even though the table spent the same.</p>
<p>Table order is listed in all three <a href="https://kazeer.ai/en/#pricing">Kazeer plans</a>. On the Free plan, a Rp500 platform fee per transaction is paid by the customer, so four transactions from one table mean four platform fees.</p>
]]></content:encoded>
      <category>Operations</category>
      <dc:creator>The Kazeer team</dc:creator>
      <pubDate>Sat, 17 Oct 2026 00:00:00 GMT</pubDate>
      <enclosure url="https://kazeer.ai/img/blog/qr-order-meja-og.jpg" length="84161" type="image/jpeg" />
    </item>
    <item>
      <title>How to run a monthly stock count and find why your stock doesn&#39;t match</title>
      <link>https://kazeer.ai/en/blog/monthly-stock-count/</link>
      <guid isPermaLink="true">https://kazeer.ai/en/blog/monthly-stock-count/</guid>
      <description>Count everything once a month, compare it with the expected stock, put a rupiah value on each difference, then trace the causes one by one.</description>
      <content:encoded><![CDATA[<p>Picture this: it&#39;s the end of the month. Your report shows a reasonable gross profit, but you seem to have spent more on ingredients than usual. Your daily stock check covers only a few key ingredients, so nobody knows which items went faster than they should have.</p>
<p>A monthly stock count (in Indonesia, often called stock opname) finds out. You count everything you have, compare it with the stock your records say should be there, then put a rupiah value on the difference.</p>
<h2 id="how-a-stock-count-differs-from-the-daily-check">How a stock count differs from the daily check</h2>
<p>The daily stock check counts the five to ten ingredients your best sellers can&#39;t be made without. Its job is to tell you when to order. The <a href="https://kazeer.ai/en/blog/daily-ingredient-stock-check/">guide to daily ingredient stock checks</a> covers it.</p>
<p>A stock count matches what&#39;s in the storeroom, chiller, freezer, bar, and kitchen against your stock records. So you count everything, including cups and lids, ingredients you rarely use, and opened packs. It takes longer, so once a month is enough.</p>
<h2 id="prepare-for-count-day">Prepare for count day</h2>
<ul role="list">
<li>Pick the same time every month, such as after closing on the last day of the month or before opening on the 1st, so you can compare the results.</li>
<li>While you count, stop sales, prep, incoming deliveries, and transfers to other outlets. If a delivery arrives anyway, set it aside unopened.</li>
<li>Organize the count sheet by storage location, in the order you walk: dry storage, chiller, freezer, bar, then kitchen. Within each location, list items in the order they sit on the shelves.</li>
<li>Use the recipe units, such as grams, ml, or pieces, not cartons or packs. For example, 12 one-liter cartons of UHT milk go down as 12,000 ml.</li>
<li>Weigh or measure opened packs instead of estimating them as you would in the daily check. Measure liquids such as milk and syrup with a measuring jug, because the recipe uses ml. For reusable containers, weigh each empty one once, write its weight on it, and subtract that from what the scale shows.</li>
<li>Put two people in each area: one counts, one writes.</li>
</ul>
<p>The count sheet needs only the item name, the unit, the count, and notes. Leave the expected stock off the sheet. A counter who can see the number on record tends to copy it without really counting.</p>
<h2 id="how-to-count">How to count</h2>
<ol>
<li>Count area by area, shelf by shelf.</li>
<li>Write each number with its unit. Anything that isn&#39;t on the sheet goes on the blank lines at the bottom.</li>
<li>Count damaged or expired items separately and mark them. They aren&#39;t usable stock. How to prevent them is in the <a href="https://kazeer.ai/en/blog/fifo-ingredient-stock/">guide to FIFO and FEFO</a>.</li>
<li>Count prepared ingredients, such as milk already in a pitcher at the bar, in the unit of the original ingredient.</li>
<li>When an area is done, someone from another area recounts a few expensive items, such as coffee beans. If the numbers differ, count them again together.</li>
</ol>
<h2 id="compare-with-the-expected-stock">Compare with the expected stock</h2>
<p>Expected stock is what you&#39;d have if ingredients were used only according to the recipes:</p>
<ul role="list">
<li>Expected stock = opening stock + stock received − usage by recipe (with more than one outlet, add transfers in and subtract transfers out)</li>
<li>Usage by recipe = portions sold × portion size, added up across every menu item that uses the ingredient</li>
<li>Difference = counted − expected stock</li>
<li>Value of the difference = difference × unit price</li>
</ul>
<p>Opening stock is last month&#39;s count. You get the unit price from your receipts: purchase price divided by pack size, as in the <a href="https://kazeer.ai/en/blog/cogs-per-menu-item/">guide to COGS (cost of goods sold) per menu item</a>.</p>
<p>If you use Kazeer, ingredient stock goes down automatically with each sale. As long as every menu item has a recipe, the stock left in Kazeer&#39;s Inventory is the number you compare your count with. Stock is managed per outlet, so compare outlet by outlet.</p>
<div class="md-note" role="note" data-kind="example"><p><strong>Example:</strong> The numbers in this table are an example for one cafe, not real business data. The unit prices are the sample prices from the COGS guide.</p>
</div>
<div class="md-table" role="region" tabindex="0" aria-label="Compare with the expected stock (table, scrollable)"><table><thead><tr><th scope="col">Item</th><th scope="col" style="text-align:right">Expected stock</th><th scope="col" style="text-align:right">Counted</th><th scope="col" style="text-align:right">Difference</th><th scope="col" style="text-align:right">Unit price</th><th scope="col" style="text-align:right">Value of difference</th></tr></thead><tbody><tr><td>Coffee beans</td><td style="text-align:right">4,200 g</td><td style="text-align:right">3,950 g</td><td style="text-align:right">−250 g</td><td style="text-align:right">Rp200/g</td><td style="text-align:right">−Rp50,000</td></tr><tr><td>UHT milk</td><td style="text-align:right">18,000 ml</td><td style="text-align:right">15,600 ml</td><td style="text-align:right">−2,400 ml</td><td style="text-align:right">Rp18/ml</td><td style="text-align:right">−Rp43,200</td></tr><tr><td>Palm sugar syrup</td><td style="text-align:right">3,500 ml</td><td style="text-align:right">3,150 ml</td><td style="text-align:right">−350 ml</td><td style="text-align:right">Rp40/ml</td><td style="text-align:right">−Rp14,000</td></tr><tr><td>Plastic cups</td><td style="text-align:right">320 pcs</td><td style="text-align:right">300 pcs</td><td style="text-align:right">−20 pcs</td><td style="text-align:right">Rp600 each</td><td style="text-align:right">−Rp12,000</td></tr><tr><td>Cup lids</td><td style="text-align:right">320 pcs</td><td style="text-align:right">330 pcs</td><td style="text-align:right">+10 pcs</td><td style="text-align:right">Rp150 each</td><td style="text-align:right">+Rp1,500</td></tr><tr><td>Total</td><td style="text-align:right"></td><td style="text-align:right"></td><td style="text-align:right"></td><td style="text-align:right"></td><td style="text-align:right">−Rp117,700</td></tr></tbody></table></div>
<p>How to read the first row: 3,950 g − 4,200 g = −250 g, so you&#39;re 250 g of coffee beans short, worth 250 × Rp200 = Rp50,000. The four items that came up short add up to Rp50,000 + Rp43,200 + Rp14,000 + Rp12,000 = Rp119,200. The lids are Rp1,500 over, so the total is Rp117,700 short.</p>
<p>Sort by value, not by quantity. The 2,400 ml of milk looks like the biggest gap, but the 250 g of coffee beans is worth more. An overage, like the lids, needs a cause too, because it can mean a record is wrong.</p>
<div class="md-note" role="note" data-kind="note"><p><strong>Note:</strong> The difference at your first count can be large, because it covers everything since you started recording stock. If your comparison number doesn&#39;t start from last month&#39;s count, this month&#39;s difference still includes the old one. Work out the new difference item by item: say coffee beans are 250 g short this month and were 200 g short last month, so the new shortfall is 50 g.</p>
</div>
<h2 id="find-the-cause-of-each-difference">Find the cause of each difference</h2>
<p>Recount any item with a big difference first, because a counting mistake is the quickest fix. If the number holds, check the causes below.</p>
<h3 id="the-recipe-doesnt-match-the-real-portion">The recipe doesn&#39;t match the real portion</h3>
<p>The sign: a shortfall every month in ingredients used across many menu items, such as milk and coffee beans. Weigh the portions your barista makes and compare them with the recipe. How to keep portions consistent is in <a href="https://kazeer.ai/en/blog/reduce-ingredient-waste/">our article on ingredient waste</a>. Check new menu items or toppings without a written recipe too: their ingredients get used but never counted.</p>
<h3 id="waste-isnt-written-down">Waste isn&#39;t written down</h3>
<p>The sign: a shortfall in ingredients that spoil quickly or often get remade. Waste never becomes a sale, so it never comes off the expected stock. A waste log shows how much of the difference is already explained.</p>
<h3 id="deliveries-not-recorded-or-the-wrong-unit">Deliveries not recorded, or the wrong unit</h3>
<p>A delivery nobody records makes your count higher than the expected stock. A wrong unit at receiving makes an odd-looking difference, often a multiple of the pack size. Say a case of 12 one-liter cartons of milk is recorded as 1 carton: your count comes out 11,000 ml over. Match every receipt from the month against your record of stock received.</p>
<h3 id="transfers-between-outlets-without-a-record">Transfers between outlets without a record</h3>
<p>The sign: one outlet is over and another is short by about the same amount. Compare differences across outlets before you look for other causes, and record every transfer at both outlets.</p>
<h3 id="missing-stock">Missing stock</h3>
<p>If you&#39;ve checked the causes above and the shortfall keeps showing up, especially on small, expensive items, someone may be taking them. Don&#39;t accuse anyone right away. Count that item once a week to see when the difference appears, and limit who holds the storeroom key. Limit who can change stock records too. In Kazeer, <a href="https://kazeer.ai/en/blog/staff-access-multi-outlet/">staff access</a> is set per task and per outlet.</p>
<h2 id="where-kazeer-helps">Where Kazeer helps</h2>
<p>Counting the shelves is still a job for people. Kazeer helps with the records:</p>
<ul role="list">
<li>Kazeer&#39;s Inventory holds your list of items and ingredients. That&#39;s where you check stock and see what&#39;s left.</li>
<li>All your outlets are in one account, and you can move items to the outlet that needs them. Move them in Kazeer every time stock goes to another outlet. <a href="https://kazeer.ai/en/#outlets">See the multi-outlet section</a>.</li>
<li>After a transaction, Kazeer AI sends a low-stock or out-of-stock alert to the owner and store admins.</li>
<li>You can also ask Kazeer AI on the web or in WhatsApp, for example &quot;Which items should I check?&quot; (&quot;Barang apa yang perlu dicek?&quot;; Kazeer AI mostly replies in Indonesian). If the answer doesn&#39;t match the shelf, find out why. <a href="https://kazeer.ai/en/#kazeer-ai">See example questions for Kazeer AI</a>.</li>
</ul>
<h2 id="after-the-count">After the count</h2>
<p>A shortfall that&#39;s left after you&#39;ve fixed counting mistakes, wrongly recorded deliveries, and transfers between outlets is ingredient cost that isn&#39;t in the COGS in your report. COGS in Kazeer&#39;s reports is recorded from every sale, while ingredients thrown out or gone missing are never sold. If the whole difference in the example really happened that month, your real gross profit is Rp117,700 lower than the report shows, and so is your real net profit. How to read both is in the <a href="https://kazeer.ai/en/blog/gross-profit-vs-net-profit/">guide to gross and net profit</a>.</p>
<p>Before the next count:</p>
<ol>
<li>Bring bar portions back to the recipe, or update the recipe if the portion really has changed.</li>
<li>Start a <a href="https://kazeer.ai/en/blog/reduce-ingredient-waste/">waste log</a> if you don&#39;t have one.</li>
<li>Write each item&#39;s difference in one monthly table. Put items that come up short or over two months in a row first.</li>
<li>Count items with a big difference once a week until you find the cause.</li>
<li>If a small difference keeps showing up on the same ingredient, add it to the waste line in your COGS calculation.</li>
<li>Use the count as next month&#39;s opening stock, and keep the count sheets.</li>
</ol>
]]></content:encoded>
      <category>Stock</category>
      <dc:creator>The Kazeer team</dc:creator>
      <pubDate>Sat, 17 Oct 2026 00:00:00 GMT</pubDate>
      <enclosure url="https://kazeer.ai/img/blog/stock-opname-og.jpg" length="93014" type="image/jpeg" />
    </item>
    <item>
      <title>When the drawer doesn&#39;t match: how to trace the difference without accusing anyone</title>
      <link>https://kazeer.ai/en/blog/tracing-cash-drawer-differences/</link>
      <guid isPermaLink="true">https://kazeer.ai/en/blog/tracing-cash-drawer-differences/</guid>
      <description>Is the drawer short or over? Trace the usual causes while the cashier still remembers, log every shift, and read the pattern before you suspect anyone.</description>
      <content:encoded><![CDATA[<p>Picture this: in one week your cash drawer is off three times. Monday it&#39;s Rp15,000 short, Thursday Rp3,000 over, Saturday Rp35,000 short. Each time you count again, can&#39;t find the cause, and let it go. The next week it happens again, and you start to suspect the cashier on duty.</p>
<p>Before you suspect anyone, rule out the innocent explanations. How to count the drawer and work out the difference is in the <a href="https://kazeer.ai/en/blog/end-of-day-cash-up/">guide to the end-of-day cash-up</a>.</p>
<h2 id="ordinary-causes-to-rule-out-first">Ordinary causes to rule out first</h2>
<p>The direction of the difference is your first clue. A drawer that&#39;s over usually means money came in without being recorded, or a customer got too little change. A drawer that&#39;s short usually means money went out, or a payment was recorded as cash when the money never reached the drawer.</p>
<div class="md-table" role="region" tabindex="0" aria-label="Ordinary causes to rule out first (table, scrollable)"><table><thead><tr><th scope="col">Cause</th><th scope="col">Cash drawer</th><th scope="col">Where it shows</th></tr></thead><tbody><tr><td>Wrong change</td><td>Short if too much, over if too little</td><td>Only in the cashier&#39;s memory</td></tr><tr><td>Customer left the change, or a tip went into the drawer</td><td>Over</td><td>Only in the cashier&#39;s memory</td></tr><tr><td>Starting float miscounted at opening</td><td>Short or over</td><td>That morning&#39;s cash book</td></tr><tr><td>Drawer money spent on a purchase with no receipt</td><td>Short</td><td>No receipt</td></tr><tr><td>Payment method mixed up, such as QRIS recorded as cash</td><td>Short or over, with QRIS or card off by the same amount the other way</td><td>The QRIS transaction list and the card machine&#39;s summary</td></tr><tr><td>Customer paid cash, payment not recorded yet</td><td>Over</td><td>The order is still Unpaid</td></tr><tr><td>Order cancelled after the money went into the drawer</td><td>Over</td><td>A cancelled order in the records</td></tr><tr><td>Payment recorded on another order</td><td>Short or over by the difference between the two totals</td><td>The paying customer&#39;s order is still Unpaid</td></tr></tbody></table></div>
<h2 id="trace-it-before-the-cashier-goes-home">Trace it before the cashier goes home</h2>
<p>While the cashier still remembers who paid with large notes and the purchase receipts haven&#39;t been thrown away, check in this order:</p>
<ol>
<li>Check the Unpaid orders first. If the customer did pay and the shift is still open, record the payment on that order now. In Kazeer, a shift can be closed with unpaid orders, and those orders show as Unpaid in the shift details.</li>
<li>Count again with a second person until your totals match. A difference the size of one note, such as Rp10,000, looks more like a note that slipped out of place or wrong change.</li>
<li>Check the starting float in the morning&#39;s cash book: the amount, who handed it over, and whether it was counted together.</li>
<li>Open the totals per payment method (cash, QRIS, card) and per cashier shift in Kazeer. Compare QRIS with the list of incoming transactions, and card with the card machine&#39;s summary. If cash is Rp22,000 short and QRIS is Rp22,000 over, look for an order of that amount on that shift.</li>
<li>Match each cancelled order against the cancellation book (see the rules below), especially any worth the same as the difference. Did any money change hands?</li>
<li>Only then, ask the cashier.</li>
</ol>
<h3 id="asking-without-accusing">Asking without accusing</h3>
<p>Start from what you&#39;ve already checked: &quot;The drawer is Rp40,000 short. QRIS and card match, and there are no Unpaid orders. Was any drawer money used to buy something today?&quot; A question like &quot;Where did the money go?&quot; makes people defensive, and they stop trying to remember. Write the cashier&#39;s answer in the difference log, even if it&#39;s &quot;I don&#39;t know.&quot;</p>
<h2 id="log-every-shift-including-the-ones-that-match">Log every shift, including the ones that match</h2>
<p>Write one line for every shift, including the ones that match, so you know whether three differences came from 10 shifts or 40. Use the same words for the cause every time so you can count them: wrong change, tip, starting float, purchase without receipt, wrong payment method, unpaid, cancellation, wrong order, or not found.</p>
<p>A drawer that matches isn&#39;t always clean: a cash payment that&#39;s never recorded, followed by cancelling the order, leaves no difference. So read the cancellation book shift by shift alongside this log (see the <a href="https://kazeer.ai/en/blog/not-paid-receipts-and-closed-bills/">article on the NOT PAID receipt</a>).</p>
<div class="md-note" role="note" data-kind="example"><p><strong>Example:</strong> The difference log of an outlet with a morning and an evening shift. All numbers in this article are examples only.</p>
</div>
<div class="md-table" role="region" tabindex="0" aria-label="Log every shift, including the ones that match (table, scrollable)"><table><thead><tr><th scope="col">Date</th><th scope="col">Shift</th><th scope="col">Cashier</th><th scope="col">Difference</th><th scope="col">Cause</th></tr></thead><tbody><tr><td>1 Sep</td><td>Morning</td><td>Cashier A</td><td>Matched</td><td></td></tr><tr><td>1 Sep</td><td>Evening</td><td>Cashier B</td><td>Rp22,000 short</td><td>Wrong payment method</td></tr><tr><td>2 Sep</td><td>Morning</td><td>Cashier A</td><td>Rp5,000 over</td><td>Wrong change</td></tr><tr><td>2 Sep</td><td>Evening</td><td>Cashier C</td><td>Rp40,000 short</td><td>Purchase without receipt</td></tr><tr><td>3 Sep</td><td>Morning</td><td>Cashier A</td><td>Matched</td><td></td></tr><tr><td>3 Sep</td><td>Evening</td><td>Cashier C</td><td>Rp25,000 short</td><td>Not found</td></tr></tbody></table></div>
<h3 id="reading-the-log-after-four-weeks">Reading the log after four weeks</h3>
<div class="md-note" role="note" data-kind="example"><p><strong>Example:</strong> The same log after four weeks, summed up per cashier. Cashier A usually works mornings, and Cashiers B and C take turns on the evening shift.</p>
</div>
<div class="md-table" role="region" tabindex="0" aria-label="Reading the log after four weeks (table, scrollable)"><table><thead><tr><th scope="col">Cashier</th><th scope="col" style="text-align:right">Shifts</th><th scope="col" style="text-align:right">With a difference</th><th scope="col" style="text-align:right">Cause found</th><th scope="col" style="text-align:right">Not found</th></tr></thead><tbody><tr><td>Cashier A</td><td style="text-align:right">24</td><td style="text-align:right">3</td><td style="text-align:right">3</td><td style="text-align:right">0</td></tr><tr><td>Cashier B</td><td style="text-align:right">16</td><td style="text-align:right">4</td><td style="text-align:right">3</td><td style="text-align:right">1</td></tr><tr><td>Cashier C</td><td style="text-align:right">16</td><td style="text-align:right">5</td><td style="text-align:right">1</td><td style="text-align:right">4</td></tr></tbody></table></div>
<ul role="list">
<li>Differences with a known cause show you what needs practice. Three of Cashier B&#39;s four differences were the wrong payment method, so build the habit of checking the method before finishing a payment. Two of Cashier A&#39;s three were wrong change, and there&#39;s practice for that in the <a href="https://kazeer.ai/en/blog/training-a-new-cashier/">guide to training a new cashier</a>.</li>
<li>Compare cashiers with similar schedules. Cashiers B and C each worked 16 shifts, nearly all of them evenings. Unexplained differences: one for Cashier B and four for Cashier C, and those four add up to Rp125,000 short (Rp25,000 + Rp20,000 + Rp30,000 + Rp50,000).</li>
<li>Before you draw conclusions about a person, look for what else those shifts have in common. Were they all the busiest weekend evenings? Was the drawer handed over without a count, or held by someone else while Cashier C was on break? If so, fix the process first, then read the next two weeks of the log.</li>
</ul>
<h2 id="drawer-rules-for-all-your-cashiers">Drawer rules for all your cashiers</h2>
<p>If you&#39;re only bringing in these rules now, start them for every cashier on the same date, so no one feels singled out. Go through the reasons with all your cashiers, then post the rules near the counter.</p>
<ol>
<li>Each cashier keeps their own drawer for the shift and uses their own login. In Kazeer, each staff member&#39;s access is set per task and per outlet (<a href="https://kazeer.ai/en/blog/staff-access-multi-outlet/">guide to staff access</a>). Don&#39;t lend out logins, the owner account included.</li>
<li>The cashier leaving and the cashier starting count the drawer together at every handover, and both sign the cash book. When a cashier takes a break, the drawer stays locked, or the person covering counts with them before and after.</li>
<li>The starting float is always the same amount (there&#39;s a sample breakdown in the <a href="https://kazeer.ai/en/blog/end-of-day-cash-up/">cash-up guide</a>).</li>
<li>Whoever takes money from the drawer gets a receipt and writes it in the cash book straight away: the amount, what it was for, and their name. Petty cash for last-minute purchases is best kept separate from the drawer.</li>
<li>Tips, including change a customer leaves behind, go in a separate jar.</li>
<li>You or the shift lead approve each cancellation (<a href="https://kazeer.ai/en/blog/not-paid-receipts-and-closed-bills/">how, in the article on the NOT PAID receipt</a>), and the cashier writes it in the cancellation book: the date and time, the table or customer name, the order total, the reason, and who approved it. If the kitchen needs to cancel an order, say because an ingredient ran out, the kitchen tells the cashier first.</li>
</ol>
<p>These rules leave out wage deductions and penalties on purpose. If you want rules on those, ask someone who knows employment law first.</p>
<h2 id="what-kazeer-records-and-what-it-doesnt">What Kazeer records, and what it doesn&#39;t</h2>
<p>Cancelled orders stay visible in Kazeer&#39;s records. Unpaid orders can be cancelled by the cashier and the store admin, and from the kitchen screen, while paid orders can&#39;t be cancelled. Kazeer doesn&#39;t ask for a reason and doesn&#39;t record who cancelled, only the time the order was last changed. Cancellations aren&#39;t in the audit log either, so you still need the cancellation book.</p>
<p>The customer receipt can only be printed once the order is paid, so if a customer gets a receipt, their payment is on record.</p>
<h2 id="when-the-pattern-points-to-one-person">When the pattern points to one person</h2>
<p>The log tells you which shifts to check more closely. Deciding who&#39;s at fault takes more than that. A fair way forward:</p>
<ol>
<li>Rule out causes in the process first, then gather what you have: the difference log, that shift&#39;s totals per payment method, the Unpaid orders, the cancellations matched against the book, and camera footage if you have it.</li>
<li>Talk in private, away from customers and other staff. Show the records, then ask for an explanation: &quot;In four weeks there have been four differences on your shifts that we couldn&#39;t explain. I want to figure this out with you. Was anything different on those shifts?&quot; Listen to the answer: there may be something the records don&#39;t show, such as a coworker who often takes money from the drawer.</li>
<li>Agree on next steps and a time frame, such as two weeks with you or the shift lead as the second counter at the start and end of each of their shifts. Write the agreement down, and both of you sign it.</li>
<li>After two weeks, read the log again. If the differences stop, note what changed. If they continue, you have a written record for the next step. For decisions about someone&#39;s employment, get advice from someone who knows employment law first.</li>
</ol>
]]></content:encoded>
      <category>Staff</category>
      <dc:creator>The Kazeer team</dc:creator>
      <pubDate>Sat, 17 Oct 2026 00:00:00 GMT</pubDate>
      <enclosure url="https://kazeer.ai/img/blog/selisih-kas-og.jpg" length="90160" type="image/jpeg" />
    </item>
    <item>
      <title>The NOT PAID receipt that went viral: how to make sure every payment is recorded</title>
      <link>https://kazeer.ai/en/blog/not-paid-receipts-and-closed-bills/</link>
      <guid isPermaLink="true">https://kazeer.ai/en/blog/not-paid-receipts-and-closed-bills/</guid>
      <description>The viral NOT PAID receipt shows the difference between a temporary bill and a paid receipt. Here&#39;s how to make sure every cash payment gets recorded.</description>
      <content:encoded><![CDATA[<p>In May 2026, a post about cafe and restaurant receipts drew a lot of attention. It reminded people who eat at cafes and restaurants to ask for a receipt that shows the bill is paid, not a bill that still says it hasn&#39;t been. For a customer, that&#39;s about proof of payment. For you as the owner, it&#39;s about making sure every payment actually gets recorded.</p>
<p>Below: the difference between a temporary bill and a paid receipt, why the risk sits with cash payments, and the controls you can set up, including a daily check before closing.</p>
<div class="md-note" role="note" data-kind="note"><p><strong>Note:</strong> Kazeer has no connection to the post or to any business whose receipts appear in it.</p>
</div>
<h2 id="what-the-post-showed">What the post showed</h2>
<p>A Threads post by @carino_mi_amante was <a href="https://www.instagram.com/p/DYwfjUlj1CT/" target="_blank" rel="noopener noreferrer">reposted by @jkt.feed on 25 May 2026</a> on Instagram, as eight images along with some of the replies. It shows two receipts from the same table. The first still says NOT PAID under the total and is marked wrong. The second shows the payment, by card through an EDC terminal, and is marked right.</p>
<p>Other users then shared similar receipts saying the bill wasn&#39;t settled, even though they had paid, one of them by QRIS. Replies explained how it works: when a customer asks for the bill, the cashier prints a temporary bill for them to check. Once the customer pays, the receipt is printed again as a paid receipt that shows how they paid. Some people who work in the trade also described ways businesses prevent it, and we cover several of those ideas below.</p>
<p>A receipt that says not paid isn&#39;t necessarily a sign of fraud. It may simply be a bill printed before the customer paid, with the paid receipt never handed over.</p>
<h2 id="temporary-bill-and-paid-receipt">Temporary bill and paid receipt</h2>
<p>One order can produce two slips of paper:</p>
<div class="md-table" role="region" tabindex="0" aria-label="Temporary bill and paid receipt (table, scrollable)"><table><thead><tr><td></td><th scope="col">Temporary bill</th><th scope="col">Paid receipt (closed bill)</th></tr></thead><tbody><tr><th scope="row">When it&#39;s printed</th><td>When the customer asks for the bill, before paying</td><td>After the payment is recorded at the POS</td></tr><tr><th scope="row">What it shows</th><td>The items and the total, sometimes with a note that it&#39;s unpaid</td><td>The items, the total, and how it was paid: cash, QRIS, or card</td></tr><tr><th scope="row">What it&#39;s for</th><td>The customer checks the order and the total</td><td>Proof that the payment is on record</td></tr></tbody></table></div>
<p>The wording on each slip differs from one POS app to the next. What matters is that the cashier and the customer can tell them apart at a glance.</p>
<p>In Kazeer, cash, QRIS, and card payments are recorded on the same order, and the Unpaid status marks an order whose payment isn&#39;t recorded yet. If your outlet uses a receipt printer, receipts are printed from the POS app.</p>
<h2 id="why-the-risk-sits-with-cash">Why the risk sits with cash</h2>
<p>QRIS and card payments leave a trail outside the POS: in the QRIS provider&#39;s transaction list and on the card terminal. Cash leaves no trail like that. Replies to the post explained the gap: a customer pays cash, but a dishonest cashier hands over only the temporary bill, keeps the money, and later cancels the order in the system. The sale disappears from the records, and the money never reaches the drawer. The customer loses nothing, having already paid. The loss falls on the business owner.</p>
<p>In a case like that, the cash count at closing can still match, because the sale isn&#39;t on record and the money isn&#39;t in the drawer either. So matching the cash alone isn&#39;t enough. Cancellations and unpaid orders need checking too.</p>
<p>Honest mistakes happen as well. A cashier in a rush can forget to record a cash payment. The order stays Unpaid while the money sits in the drawer, so the drawer holds more than the records show.</p>
<h2 id="controls-you-can-set-up">Controls you can set up</h2>
<h3 id="a-paid-receipt-for-every-customer">A paid receipt for every customer</h3>
<p>Make it a written rule: once a payment is recorded, the cashier prints the receipt and hands it to the customer, whether they paid by cash, QRIS, or card. If the customer already got a temporary bill, the paid receipt replaces it. Train this from a new cashier&#39;s first day, as in the <a href="https://kazeer.ai/en/blog/training-a-new-cashier/">guide to training a new cashier</a>, and keep spare paper rolls so receipts can still be printed when a roll runs out at a busy hour.</p>
<h3 id="limit-who-approves-a-cancellation">Limit who approves a cancellation</h3>
<p>Decide who can approve a cancellation, such as you or the shift lead, especially for orders that have been cooked or already billed. Have every cancellation written in a cancellation book: date, time, table, reason, and who approved it.</p>
<p>In Kazeer, cancelled orders stay visible in the records, so you can match the book against the app. Don&#39;t lend the owner account to a cashier, because it opens every outlet and every report. Give each staff member access for their task and outlet, as in the <a href="https://kazeer.ai/en/blog/staff-access-multi-outlet/">guide to staff access</a>.</p>
<h3 id="handle-less-cash">Handle less cash</h3>
<p>With dynamic QRIS, a QR code is made for each transaction and already holds the amount due. Card payments are recorded on the card terminal. Both leave a trail you can match. In Kazeer, dynamic QRIS is included in every plan, and QRIS and card payments are recorded on the same order. Make it a habit for cashiers to offer QRIS and card when customers are ready to pay.</p>
<p>Keep accepting cash. Indonesia&#39;s Currency Law (Law No. 7 of 2011) prohibits refusing rupiah as payment unless there is doubt that it&#39;s genuine. The goal is to handle less cash, not to turn it away.</p>
<h3 id="a-camera-over-the-counter">A camera over the counter</h3>
<p>Point a camera at the counter, the drawer, and the spot where receipts are handed over. Make sure it doesn&#39;t capture the card terminal&#39;s keypad while customers enter their PIN. Tell your staff where the cameras are and what they&#39;re for. A recording helps answer a specific question, such as a cancellation at a certain time, and protects an honest cashier when a customer disputes something. Keep recordings at least until you&#39;ve finished reading that week&#39;s cancellations.</p>
<h3 id="a-free-meal-sign-for-missing-receipts">A free-meal sign for missing receipts</h3>
<p>Some businesses put up a sign saying the meal is free if the customer doesn&#39;t get a receipt. The upside: customers ask for their receipt, so paid receipts get missed less often. The downsides: you pay for every forgotten receipt, you need to write the terms clearly (what counts is the paid receipt, not the temporary bill), and it can lead to arguments at the counter. A lighter option is a sign asking customers to make sure they get a paid receipt.</p>
<h3 id="be-fair-to-your-cashiers">Be fair to your cashiers</h3>
<p>Most cashiers do their job honestly. One not-paid receipt, one cancellation, or one difference in the drawer proves nothing. Clear rules protect them: a paid receipt handed over, cancellations written down and approved, and camera footage let a cashier show what happened. If you see a pattern that looks wrong, check the records and the footage first, then talk with the cashier in private.</p>
<h2 id="a-daily-check-before-closing">A daily check before closing</h2>
<p>Run this check every night, before the cashier leaves:</p>
<div class="md-table" role="region" tabindex="0" aria-label="A daily check before closing (table, scrollable)"><table><thead><tr><th scope="col">What to check</th><th scope="col">Where</th><th scope="col">What to ask</th></tr></thead><tbody><tr><td>Unpaid orders</td><td>The order list in the POS app</td><td>Paid but not recorded? Did a customer leave without paying?</td></tr><tr><td>Cancelled orders</td><td>The order records in the POS app</td><td>Is each one in the cancellation book, with a reason and who approved it?</td></tr><tr><td>Cash in the drawer</td><td>The cash total for that shift</td><td>Does it match the cash payments on record?</td></tr><tr><td>QRIS and card</td><td>The QRIS provider&#39;s transaction list and the card terminal&#39;s summary</td><td>Do the totals and transaction counts match what&#39;s on record?</td></tr></tbody></table></div>
<p>Kazeer shows totals per payment method (cash, QRIS, card) and per cashier shift, so the figures to compare against are there without a manual recap. How to count the drawer, record a difference, and match QRIS and card is in the <a href="https://kazeer.ai/en/blog/end-of-day-cash-up/">guide to the end-of-day cash-up</a>.</p>
<p>Once a week, read the cancellations by shift and look for patterns, not single events.</p>
<div class="md-note" role="note" data-kind="example"><p><strong>Example:</strong> Over one week, 6 cancellations are on record. Four of them happened on the evening shift, and according to the cancellation book, all four were orders already served at the table. The other two were on the morning shift, before the orders went to the kitchen. These numbers are only an example. A pattern like that proves nothing yet, but it&#39;s reason enough to match the cancellation book against the footage for those hours.</p>
</div>
<h2 id="questions-to-ask-a-pos-vendor">Questions to ask a POS vendor</h2>
<p>Every POS app works differently. Ask these questions before you choose an app, or when you review the one you already use:</p>
<ol>
<li>Do the temporary bill and the paid receipt look different, and does the paid receipt show how the customer paid?</li>
<li>Which roles can cancel an order, and can that be limited to the owner or the shift lead?</li>
<li>Does the cancellation record keep who cancelled, when, and why?</li>
<li>Can a shift be closed while there are still unpaid orders?</li>
<li>Can you see totals per payment method and per cashier shift?</li>
</ol>
<p>Here&#39;s what we can confirm for Kazeer: the Unpaid status marks orders with no payment recorded, cancellations stay visible in the records, totals per payment method and per cashier shift can be seen, staff access is set per task and per outlet, and receipts are printed from the POS app. You can ask the rest of these questions directly at a demo with the Kazeer team.</p>
<h2 id="start-this-week">Start this week</h2>
<ol>
<li>Write the paid-receipt rule down and post it near the counter.</li>
<li>Set up a cancellation book, and decide who can approve cancellations.</li>
<li>Run the daily check above every night for two weeks, then read the results.</li>
<li>If you already have a camera over the counter, check where it&#39;s pointing.</li>
<li>Explain the new rules to all your cashiers at once, along with the reason: these rules protect them too.</li>
</ol>
]]></content:encoded>
      <category>Money</category>
      <dc:creator>The Kazeer team</dc:creator>
      <pubDate>Tue, 13 Oct 2026 00:00:00 GMT</pubDate>
      <enclosure url="https://kazeer.ai/img/blog/struk-not-paid-og.jpg" length="76485" type="image/jpeg" />
    </item>
    <item>
      <title>A soto chain recruits AI engineers: what it means for a small F&amp;B business</title>
      <link>https://kazeer.ai/en/blog/soto-chain-hiring-ai-engineers/</link>
      <guid isPermaLink="true">https://kazeer.ai/en/blog/soto-chain-hiring-ai-engineers/</guid>
      <description>A chain of soto warung posted jobs for AI engineers. The questions they want answered come up at small warung too, and the answers start with your POS records.</description>
      <content:encoded><![CDATA[<p>A chain of soto warung from Boyolali posted a job opening for AI engineers, and it made the news. For a business with one outlet or a few, hiring an AI engineer usually isn&#39;t an option. But the questions they want AI to answer come up at a small warung too, and most of them can be answered from the sales records in your POS.</p>
<div class="md-note" role="note" data-kind="note"><p><strong>Note:</strong> Kazeer has no connection to the warung in the news. The facts about it come from the detikJateng report linked below.</p>
</div>
<h2 id="what-was-reported">What was reported</h2>
<p>On Saturday, 9 May 2026, <a href="https://www.detik.com/jateng/bisnis/d-8482019/warung-soto-asal-boyolali-ini-buka-lowongan-ai-engineering-kerjain-apa" target="_blank" rel="noopener noreferrer">detikJateng reported</a> that Spesial Soto Boyolali (SSB) Hj Hesti had posted an AI engineer job opening on LinkedIn. According to the report, SSB has 85 outlets in Indonesia and one in Saudi Arabia, all run from its head office.</p>
<p>Speaking to detikJateng, SSB&#39;s owner and president director, Hj. Hesti Noviasari, confirmed the hiring. In her view, AI engineers are needed to support management, serve customers better, and cut food waste. Many outlets run from one place need control and systems, for operations and for administration alike. The examples she gave include opening and closing hours at each outlet, costs, staff, stock, and checks at the cashier. The cashier checks matter because at SSB, customers take their own side dishes and pay after eating, so the cashier&#39;s records need to line up with what was produced. On the operations side, she also mentioned &quot;how many customers come in, then how many staff that needs&quot; (translated from Indonesian), along with how much food has to be cooked.</p>
<p>On food waste, SSB runs a semi-buffet setup, and according to Hesti, SSB is committed to not reselling leftover food. She hopes AI can pick up customer patterns, so the amounts of sate, gorengan (fried snacks), and soto (which is cooked in large batches) come out closer to what sells. When the report came out, SSB already had 2 AI engineers and was looking for about 10 more.</p>
<h2 id="the-same-questions-at-a-small-business">The same questions at a small business</h2>
<p>The scale is very different, but the questions are the same, and each question has a record that answers it. Your cashier already keeps most of those records.</p>
<div class="md-table" role="region" tabindex="0" aria-label="The same questions at a small business (table, scrollable)"><table><thead><tr><th scope="col">Question</th><th scope="col">At a small warung</th><th scope="col">The record that answers it</th></tr></thead><tbody><tr><td>How many customers come in?</td><td>How many transactions per hour and per day</td><td>Transactions at the cashier, with their times</td></tr><tr><td>How much should we cook?</td><td>How many portions sold on the same weekday in past weeks</td><td>Items sold per day</td></tr><tr><td>How many staff do we need?</td><td>How many people at busy hours and at slow hours</td><td>Sales per hour and totals per cashier shift</td></tr><tr><td>Which stock is running low?</td><td>Which ingredients to buy tomorrow</td><td>Remaining stock, plus a physical count</td></tr><tr><td>Does the cashier match the records?</td><td>The cash in the drawer, QRIS, and card match the payments on record</td><td>Totals per payment method and the list of cancellations</td></tr></tbody></table></div>
<p>One transaction isn&#39;t always one person, since a whole table can pay at once, but the pattern still shows. If your POS app doesn&#39;t show sales per hour, write down today&#39;s sales figure every hour. The <a href="https://kazeer.ai/en/blog/shift-schedule-busy-hours/">guide to shift schedules</a> shows how.</p>
<p>There&#39;s one record the cashier usually doesn&#39;t keep: how much was cooked and how much was left over. Without it, nobody can answer the food waste question, not AI and not you. How to match the cashier every night is in the <a href="https://kazeer.ai/en/blog/end-of-day-cash-up/">guide to the end-of-day cash-up</a>.</p>
<h2 id="jobs-ai-can-help-with-now">Jobs AI can help with now</h2>
<p>With complete records, an AI tool that reads business records can already help with:</p>
<ul role="list">
<li>Reading sales and stock records: this week&#39;s best seller, sales so far today, ingredients running low.</li>
<li>Answering routine questions in everyday words, without opening one report after another.</li>
<li>Summing up yesterday&#39;s sales and stock.</li>
<li>Pointing out busy hours, so ingredients and staff are ready before the line forms.</li>
</ul>
<p>The limit is clear: AI only reads what was recorded. Gorengan paid for without going through the cashier, orders cancelled outside the app, and ingredients thrown out without a note don&#39;t exist in its answers. If the records have gaps, the answers are wrong too, even when they sound confident.</p>
<h3 id="what-to-watch-out-for">What to watch out for</h3>
<ul role="list">
<li>Wrong answers. Check the period in the answer, and open the report before a big decision such as a large purchase or a price change.</li>
<li>Customer data. Don&#39;t paste customers&#39; names, phone numbers, or addresses into general AI chat apps.</li>
<li>Cost. Building your own program means paying people to build and maintain it. For a small outlet, a ready-made tool usually makes more sense: compare its cost with the recap time it saves you.</li>
</ul>
<h2 id="what-still-needs-people">What still needs people</h2>
<p>Even in the news report, the AI engineers are there to help with management work. At a small warung, these jobs still need people:</p>
<ul role="list">
<li>A boxed-meal order promised over someone&#39;s personal WhatsApp that isn&#39;t in the cashier yet.</li>
<li>Things outside the warung that last week&#39;s records don&#39;t show, such as rain, school holidays, or a family celebration in the next neighborhood.</li>
<li>Taste and quality: a broth that&#39;s a bit flat, or gorengan gone cold. You taste these; you don&#39;t read them in a report.</li>
<li>Counting physical stock on the shelves and in the fridge, because spilled or spoiled ingredients aren&#39;t always recorded.</li>
<li>Talking with staff about shift swaps or cash differences.</li>
<li>Price and menu decisions: raising a price, dropping a dish, or adding a new side dish.</li>
</ul>
<p>AI gives you numbers to weigh. The decision is still yours.</p>
<h2 id="start-with-one-question">Start with one question</h2>
<p>Pick one question whose answer you can use this week, then answer it with the records you have. For example: how many portions of soto should you prepare for Saturday?</p>
<blockquote><p><strong>Worked example:</strong> Over the last four Saturdays, you sold 62, 70, 58, and 66 portions of soto. That&#39;s 62 + 70 + 58 + 66 = 256 portions, so the average is 256 ÷ 4 = 64 portions per Saturday.</p>
</blockquote>
<p>Then compare it with the leftovers. Say you&#39;ve been preparing 80 portions every Saturday. With an average of 64 sold, an average of 16 portions are left over (80 − 64). If you prepare 72 portions, that&#39;s still above your highest Saturday (70 portions), and the average leftover drops to 8 portions (72 − 64). Write down the leftovers every Saturday for a month, then adjust again.</p>
<p>This sum is only as good as the records behind it. If some portions are paid for without going through the cashier, the number sold looks lower than it really is, and you could end up preparing too little.</p>
<p>How to record leftovers is in the <a href="https://kazeer.ai/en/blog/reduce-ingredient-waste/">guide to reducing ingredient waste</a>, and how to compare the same weekday is in the <a href="https://kazeer.ai/en/blog/daily-sales-report/">guide to the daily sales report</a>.</p>
<h2 id="where-kazeer-ai-fits">Where Kazeer AI fits</h2>
<p>Kazeer is a POS app with an AI assistant, so you don&#39;t need to build your own program. Its records come straight from the cashier: sales and items sold, cancellations that stay visible in the records, totals per payment method (cash, QRIS, card) and per cashier shift, and COGS and tax from every sale. COGS per menu item can be worked out from its recipe, and ingredient stock goes down automatically with each sale.</p>
<p>Kazeer AI helps you understand those records. You ask in everyday words, on the web or in WhatsApp, for example &quot;What sells best?&quot; or &quot;Which items should I check?&quot; (Kazeer&#39;s own examples are in Indonesian: &quot;Apa yang paling laku?&quot; and &quot;Barang apa yang perlu dicek?&quot;). You can also ask about yesterday&#39;s sales, or ask for business advice, such as &quot;Your busy hours are 11:00 to 13:00. Get your stock ready and promote your signature items.&quot; The hours in that advice are sample data, and the advice is translated: Kazeer AI gives its advice in Indonesian.</p>
<p>The same limit applies. Sales that never go through the cashier aren&#39;t read, and how many portions to cook is still your call.</p>
<p>All three Kazeer plans list the Kazeer AI chatbot: the Free plan, Standard Monthly, and Standard Annual. More example questions are in the <a href="https://kazeer.ai/en/blog/ask-kazeer-ai/">guide to asking Kazeer AI</a>, and a sample conversation is in the <a href="https://kazeer.ai/en/#kazeer-ai">Kazeer AI section</a>.</p>
<h2 id="steps-for-this-week">Steps for this week</h2>
<ol>
<li>Make sure every sale goes through the cashier, including side dishes customers take themselves, and record cancellations at the cashier, not on paper.</li>
<li>If your POS app supports recipes, set up recipes for your main dishes, so ingredient stock goes down with each portion sold.</li>
<li>For one main dish, write down every day how much was cooked and how much was left over.</li>
<li>After four weeks, work out the average as in the example above, then change just one thing: how much you cook, the shift schedule, or what you buy.</li>
</ol>
]]></content:encoded>
      <category>Artificial Intelligence</category>
      <dc:creator>The Kazeer team</dc:creator>
      <pubDate>Tue, 13 Oct 2026 00:00:00 GMT</pubDate>
      <enclosure url="https://kazeer.ai/img/blog/ai-warung-soto-og.jpg" length="102458" type="image/jpeg" />
    </item>
    <item>
      <title>Google Business Profile: how to get found by customers nearby</title>
      <link>https://kazeer.ai/en/blog/google-business-profile/</link>
      <guid isPermaLink="true">https://kazeer.ai/en/blog/google-business-profile/</guid>
      <description>Set up your free Google Maps profile properly: claim and verify it, get the name and hours right, add a menu and photos, handle reviews, check it monthly.</description>
      <content:encoded><![CDATA[<p>Picture this: someone near your outlet opens Google Maps and types &quot;coffee&quot;. They pick where to go from what&#39;s on the screen: opening hours, photos, menu, and reviews. If your hours are wrong or your photos are dark, they may go somewhere else.</p>
<p>All of that shows on your Google Business Profile, a free profile on Google Maps and Search. Set it up properly once, then keep it current with a short check every month.</p>
<div class="md-note" role="note" data-kind="note"><p><strong>Note:</strong> The steps and button names here follow Google&#39;s help pages as of 13 October 2026 and may change. Some features exist only in certain regions or categories, and the pages don&#39;t always say whether a feature is available in Indonesia. The outlet names, opening hours, reviews, and performance figures in this article are examples.</p>
</div>
<h2 id="how-google-picks-results-near-a-customer">How Google picks results near a customer</h2>
<p>According to <a href="https://support.google.com/business/answer/7091?hl=en" target="_blank" rel="noopener noreferrer">Google</a>, local results are mainly based on three things:</p>
<ul role="list">
<li>Relevance: how well your profile matches what someone is looking for.</li>
<li>Distance: how far your outlet is from the person searching.</li>
<li>Popularity: how well known your business is, including from reviews and links.</li>
</ul>
<p>You can&#39;t change distance, but you can work on the other two. Google says businesses with complete and accurate information are more likely to show up. Its advice: verify your business; fill in your address, hours including special hours, category, and attributes; reply to reviews; and add photos and videos.</p>
<p>Google also writes: &quot;There&#39;s no way to request or pay for a better local ranking on Google.&quot; So be wary of anyone selling a service to move your outlet up on Maps. This article doesn&#39;t promise a ranking either.</p>
<h2 id="claim-and-verify-your-profile">Claim and verify your profile</h2>
<p>Adding or claiming a profile is free. Use a Google Account that belongs to the business, not a staff member&#39;s personal account. <a href="https://support.google.com/business/answer/2911778?hl=en" target="_blank" rel="noopener noreferrer">The steps</a>:</p>
<ol>
<li>Search Google Maps for your outlet&#39;s name and city.</li>
<li>If the profile exists and hasn&#39;t been claimed, select &quot;Claim this business&quot;, then &quot;Manage now&quot;. In the app, tap &quot;About&quot; first.</li>
<li>If it doesn&#39;t exist, go to <a href="https://business.google.com/add" target="_blank" rel="noopener noreferrer">business.google.com/add</a> and select &quot;Add your business to Google&quot;.</li>
<li>If someone else has already verified it, such as a previous owner, request ownership from that profile&#39;s owner.</li>
</ol>
<p>Then <a href="https://support.google.com/business/answer/7107242?hl=en" target="_blank" rel="noopener noreferrer">verify it</a>. Google decides how, for example by phone, text, email, video, or postcard, and the options can&#39;t be changed. A postcard code usually arrives within 14 days and expires after 30 days. While you wait, don&#39;t edit your name, address, or category, and don&#39;t request a new code. The review can take up to 5 business days. Never give the code to anyone, because Google will never ask for it.</p>
<p>Have more than one outlet? Each location gets one profile, never more.</p>
<h2 id="name-category-and-hours">Name, category, and hours</h2>
<h3 id="name">Name</h3>
<p>Match your signage. <a href="https://support.google.com/business/answer/3038177?hl=en" target="_blank" rel="noopener noreferrer">Google&#39;s guidelines</a> don&#39;t allow taglines, location info, phone numbers, hours, product descriptions, or all-caps names, and unnecessary information can get a profile suspended. So not &quot;KEDAI KOPI ANDA&quot; or &quot;Kedai Kopi Anda, Cheapest Kopi Susu Aren&quot;, just &quot;Kedai Kopi Anda&quot;.</p>
<h3 id="category">Category</h3>
<p>Choose one <a href="https://support.google.com/business/answer/7249669?hl=en" target="_blank" rel="noopener noreferrer">primary category</a>, the most specific one on Google&#39;s list, because categories affect local ranking. You can add up to 9 more, but choose as few as you can and don&#39;t use them as keywords. Changing a category can trigger re-verification. All your outlets must use the same primary category.</p>
<h3 id="hours">Hours</h3>
<p>For restaurants, Google asks for the hours when diners can sit down and eat, or takeaway hours if there&#39;s no dine-in. Delivery hours can go separately under &quot;More hours&quot;. If your outlet closes in the middle of the day, add two time ranges under &quot;Edit profile&quot; &gt; &quot;Hours&quot;, such as 07:00 to 14:00 and 16:00 to 22:00.</p>
<p>Changes of <a href="https://support.google.com/business/answer/6303076?hl=en" target="_blank" rel="noopener noreferrer">up to 6 days in a row</a>, such as closing for 5 days over Lebaran, go under &quot;Special hours&quot;. Google also suggests confirming your hours on official holidays even when they&#39;re the same as usual. If you close for 7 days or more, such as two weeks of renovation, or you don&#39;t know for how long, mark the business &quot;Temporarily closed&quot;.</p>
<h2 id="menu-photos-and-other-details">Menu, photos, and other details</h2>
<h3 id="menu">Menu</h3>
<p>Food and drink businesses can add a menu with &quot;<a href="https://support.google.com/business/answer/9455840?hl=en" target="_blank" rel="noopener noreferrer">Edit menu</a>&quot;: sections, items, descriptions, and prices. Google says the feature has <a href="https://support.google.com/business/answer/3039617?hl=en" target="_blank" rel="noopener noreferrer">limited availability</a>, so it may not be on your profile yet. Changes can take 24 to 48 hours to show, so update the menu on Google two days before a new price starts at your POS.</p>
<p><a href="https://support.google.com/business/answer/3038177?hl=en" target="_blank" rel="noopener noreferrer">Google&#39;s guidelines</a> ask for a menu that represents everything available, not just popular items. A menu link also can&#39;t go straight to a third-party ordering or delivery service: use a page on your own website, or upload photos of your menu.</p>
<h3 id="photos">Photos</h3>
<p><a href="https://support.google.com/business/answer/6103862?hl=en" target="_blank" rel="noopener noreferrer">Photos</a> show once your profile is verified. Use JPG or PNG, 10 KB to 5 MB, ideally 720 x 720 pixels, in focus, well lit, and without heavy filters.</p>
<p>Start with a daytime photo of the front of your outlet, which helps customers recognize it when they arrive. Then the seating area, the counter, and the items people order most. Not sure which ones? Ask Kazeer AI &quot;What sells best?&quot; (in Indonesian, &quot;Apa yang paling laku?&quot;).</p>
<h3 id="other-details">Other details</h3>
<ul role="list">
<li><a href="https://support.google.com/business/answer/9049526?hl=en" target="_blank" rel="noopener noreferrer">Attributes</a> (&quot;Edit profile&quot; &gt; &quot;More&quot;), such as &quot;Payments&quot; and &quot;Amenities&quot;: select &quot;Yes&quot; only for what&#39;s true. Kazeer&#39;s POS records cash, QRIS, and card, so match your payment attributes to the methods you accept. Some attributes are filled in from customer feedback, so check them now and then.</li>
<li><a href="https://support.google.com/business/answer/3039617?hl=en" target="_blank" rel="noopener noreferrer">Description</a>: up to 750 characters, with no URLs, promotions, or prices. Say what you offer, what makes you different, and how long you&#39;ve been open, for example &quot;[Outlet name] is a small coffee shop on [street name], open since [year]. We brew coffee and bake bread every morning.&quot;</li>
</ul>
<h2 id="reviews-ask-honestly-reply-calmly">Reviews: ask honestly, reply calmly</h2>
<p>Create a <a href="https://support.google.com/business/answer/16816815?hl=en" target="_blank" rel="noopener noreferrer">review link or QR code</a> in a computer browser, because QR codes can&#39;t be made on a phone yet. Open your profile, select &quot;Read Reviews&quot;, then &quot;Get more reviews&quot;. Share it on receipts, in thank-you messages, at the end of a chat with a customer, or on a printed card at the counter. In Kazeer, receipts can&#39;t print a review QR code yet. You can add the link as the receipt&#39;s closing text at app.kazeer.ai, under Pengaturan Printer (printer settings), but that setting is saved per browser or device, not per outlet, and receipts printed from the Android app can&#39;t include it yet.</p>
<p>Don&#39;t offer <a href="https://support.google.com/business/answer/3474122?hl=en" target="_blank" rel="noopener noreferrer">incentives</a>, such as a free drink or a discount, in exchange for reviews. Google counts this as fake and misleading content and strictly prohibits it. A card that says &quot;Write a review, get a free iced tea&quot; breaks this rule. This is fine: &quot;If you&#39;d like, tell others about your visit on Google.&quot;</p>
<p>Only verified businesses can <a href="https://support.google.com/business/answer/3474050?hl=en" target="_blank" rel="noopener noreferrer">reply to reviews</a>. Replies are public, appear as your business, and the reviewer is notified.</p>
<p><a href="https://support.google.com/business/answer/3474122?hl=en" target="_blank" rel="noopener noreferrer">Google&#39;s advice</a>: be polite and brief, don&#39;t copy the same reply to everyone, and leave out promotions. For negative reviews: never share the reviewer&#39;s private information, be honest about what you can and can&#39;t do, apologize when it&#39;s appropriate, respond to what they actually wrote, and reply promptly.</p>
<div class="md-note" role="note" data-kind="example"><p><strong>Example:</strong> Review: &quot;My iced coffee took almost 30 minutes. The cashier wasn&#39;t friendly either.&quot; Reply: &quot;Thank you for writing. We&#39;re sorry: almost 30 minutes for one iced coffee is too long, and you should have had a better welcome at the counter. We&#39;ve talked it through with the team on shift that day. If you&#39;re willing, tell us more through the number on this profile.&quot;</p>
</div>
<p>Before you reply, check that day&#39;s records and ask the staff who were on shift. Only write what you&#39;ve actually done. <a href="https://support.google.com/business/answer/4596773?hl=en" target="_blank" rel="noopener noreferrer">Report a review</a> only if it breaks Google&#39;s policies, not because you disagree.</p>
<h2 id="posts-and-a-monthly-check">Posts and a monthly check</h2>
<p>There are three <a href="https://support.google.com/business/answer/7342169?hl=en" target="_blank" rel="noopener noreferrer">post types</a>: &quot;Update&quot;, &quot;Offer&quot;, and &quot;Event&quot;. An offer needs a title, dates, and times. Posts are archived after 6 months unless they have a date range. When you run a <a href="https://kazeer.ai/en/blog/slow-hour-promotions/">slow-hour promotion</a>, set the promo price in Kazeer&#39;s promo feature, then create an Offer post with that promotion&#39;s start and end dates.</p>
<p>The &quot;<a href="https://support.google.com/business/answer/7689763?hl=en" target="_blank" rel="noopener noreferrer">Performance</a>&quot; section shows, among other things, views, directions, calls, and website clicks. These count people who saw or contacted your profile, not people who bought, so put them next to your POS records. You can ask <a href="https://kazeer.ai/en/#kazeer-ai">Kazeer AI</a> for yesterday&#39;s number of transactions. Ask and write it down every morning, then work out the average for each month.</p>
<div class="md-table" role="region" tabindex="0" aria-label="Posts and a monthly check (table, scrollable)"><table><thead><tr><th scope="col">Example</th><th scope="col" style="text-align:right">August</th><th scope="col" style="text-align:right">September</th></tr></thead><tbody><tr><td>Directions (Google)</td><td style="text-align:right">140</td><td style="text-align:right">175</td></tr><tr><td>Calls (Google)</td><td style="text-align:right">22</td><td style="text-align:right">25</td></tr><tr><td>Transactions per day, average (Kazeer AI)</td><td style="text-align:right">172</td><td style="text-align:right">186</td></tr></tbody></table></div>
<p>Directions went up by 35 and transactions by an average of 14 a day, but that doesn&#39;t mean Google caused it. There may have been a promotion or a public holiday, so note those down too and look at the trend over several months. If directions and calls keep falling, check your hours, photos, and unanswered reviews again.</p>
<h2 id="checklist-once-at-the-start-then-every-month">Checklist: once at the start, then every month</h2>
<p>Once at the start:</p>
<ol>
<li>Claim or add your profile with the business&#39;s Google Account, then verify it. Don&#39;t share the code.</li>
<li>Write the name as it appears on your signage, and choose one specific primary category.</li>
<li>Enter dine-in hours, breaks, and special hours for the next holiday.</li>
<li>Add a menu, or a menu link that isn&#39;t a delivery app.</li>
<li>Upload photos of the front, the seating area, and your best sellers.</li>
<li>Match the payment attributes to how you take payment, and write a description with no prices.</li>
<li>Print the review QR code for the counter.</li>
</ol>
<p>At the start of every month:</p>
<ol>
<li>Check special hours for that month&#39;s holidays.</li>
<li>Make the menu and prices on Google match your POS.</li>
<li>Reply to any unanswered reviews.</li>
<li>Add new photos and a post for your next promotion.</li>
<li>Note directions and calls next to your average transactions per day.</li>
</ol>
]]></content:encoded>
      <category>Marketing</category>
      <dc:creator>The Kazeer team</dc:creator>
      <pubDate>Tue, 13 Oct 2026 00:00:00 GMT</pubDate>
      <enclosure url="https://kazeer.ai/img/blog/profil-bisnis-google-og.jpg" length="102098" type="image/jpeg" />
    </item>
    <item>
      <title>Meta Business Agent on WhatsApp Business: where it stands in Indonesia and how to set it up</title>
      <link>https://kazeer.ai/en/blog/meta-business-agent-on-whatsapp/</link>
      <guid isPermaLink="true">https://kazeer.ai/en/blog/meta-business-agent-on-whatsapp/</guid>
      <description>An AI agent in WhatsApp Business can answer customers after you close. Check it&#39;s available, match prices to your POS, and test it before it goes live.</description>
      <content:encoded><![CDATA[<p>Picture this: it&#39;s 23:00 at your coffee shop. The chairs are up on the tables, and then the business phone buzzes. Someone wants to know what time you open tomorrow, someone asks the price of a Kopi Susu Aren, and someone wants 30 cups for an office event. Usually these get answered the next morning.</p>
<p>Meta now offers an AI agent in the WhatsApp Business app that can answer messages like these for your business.</p>
<div class="md-note" role="note" data-kind="note"><p><strong>Note:</strong> Kazeer is not affiliated with Meta. Facts about Meta Business Agent come from Meta&#39;s and WhatsApp&#39;s official pages, read on 13 October 2026. Its features, cost, and availability can change.</p>
</div>
<h2 id="what-meta-business-agent-is">What Meta Business Agent is</h2>
<p>Meta Business Agent is an AI agent inside the WhatsApp Business app that replies to customers for your business. When Meta <a href="https://about.fb.com/news/2026/06/meta-business-agent/" target="_blank" rel="noopener noreferrer">introduced it on 3 June 2026</a>, it said the agent can answer questions about your business, recommend products from your catalog, book appointments, and close sales, in the customer&#39;s language and in your business&#39;s tone. You decide when a team member steps in.</p>
<p>According to <a href="https://whatsappbusiness.com/products/business-app-ai-agent/" target="_blank" rel="noopener noreferrer">the product page</a>, the agent learns from your past chats, your Facebook Page, and your website if you have one, and you can upload a product catalog or price list. You also choose who it replies to: everyone, only new customers, or customers coming from ads. Chats on topics you flag to avoid are handed to you, and you can step in on any chat at any time. <a href="https://whatsappbusiness.com/blog/introducing-meta-business-agent-ai/" target="_blank" rel="noopener noreferrer">WhatsApp&#39;s announcement</a> also mentions a morning briefing of the chats you missed overnight.</p>
<p>Don&#39;t mix it up with <a href="https://kazeer.ai/en/blog/ask-kazeer-ai/">Kazeer AI</a>. You can ask Kazeer AI questions in WhatsApp too, but you&#39;re the one asking, as the owner, about your business records, such as &quot;What sells best?&quot;. Meta Business Agent answers your customers.</p>
<h2 id="what-changed-and-when">What changed and when</h2>
<p>As of October 2026:</p>
<ul role="list">
<li>3 June 2026: Meta introduced the agent, and WhatsApp said it was starting with a select number of businesses.</li>
<li>15 September 2026: Meta <a href="https://about.fb.com/news/2026/09/introducing-meta-one-subscription-service-more-features-ai/" target="_blank" rel="noopener noreferrer">announced the Meta One subscription</a>, which gives more access to the agent.</li>
</ul>
<p>On countries, the official product page only says: &quot;Available to eligible businesses in select markets, with additional markets launching soon.&quot; Indonesia isn&#39;t named on that official page, and the eligibility rules aren&#39;t explained. So the agent may not show up in your account yet.</p>
<p>To check, your phone number must already be registered in the WhatsApp Business app. The official steps: &quot;Go to Tools, select Meta Business Agent, authenticate, link your account if prompted, and tap Confirm.&quot;</p>
<p>On cost, <a href="https://whatsappbusiness.com/products/business-app-meta-one/" target="_blank" rel="noopener noreferrer">the Meta One page</a> says the WhatsApp Business app stays free, and Meta Business Agent is free each month up to an included allowance, whose size isn&#39;t stated. More responses come with a Meta One plan, bought per business profile or phone number, so count the cost per number if each outlet has its own. Meta&#39;s announcement gives prices only in dollars (the Essential plan starts at $14.99 a month) and says plans may vary by region. The official pages don&#39;t list a rupiah price, so check the price in the app before you subscribe.</p>
<div class="md-note" role="note" data-kind="note"><p><strong>Note:</strong> Eligible new Meta One subscribers may get a 7-day free trial, after which the subscription starts automatically unless cancelled. If you try it, set a reminder for day six.</p>
</div>
<h2 id="get-your-information-ready-first">Get your information ready first</h2>
<p><a href="https://whatsappbusiness.com/resources/resource-library/meta-business-agent-whatsapp/" target="_blank" rel="noopener noreferrer">WhatsApp&#39;s official guide</a> asks you to make sure your business information and product descriptions are complete and up to date. The agent also learns from past chats, which may hold old prices or promotions that have ended. So put your current information in the catalog or price list you upload, and bring your website in line:</p>
<ul role="list">
<li>Opening hours for each day, including public holidays and the time you take the last order.</li>
<li>Menu items and prices, exactly the same as on your POS. If dine-in and takeaway prices differ, list both.</li>
<li>Promotions running now, with the date and time they end.</li>
<li>Your delivery area and fee, or a clear line saying you don&#39;t deliver.</li>
<li>The payment methods you accept, such as cash, QRIS, and card.</li>
<li>Reservations: for how many people, the latest time to book, and who confirms them.</li>
</ul>
<p>The <a href="https://kazeer.ai/en/blog/bring-customers-back-whatsapp/">article on bringing customers back through WhatsApp</a> shows how to fill in your business profile and catalog in WhatsApp Business.</p>
<p>Then flag the topics a person should answer:</p>
<ul role="list">
<li>Allergies and ingredients, because a wrong answer can put a customer at risk.</li>
<li>Halal claims. Answer these yourself, based on the proof you have.</li>
<li>Complaints and refunds.</li>
<li>Catering and large orders, which need checking against your stock and kitchen capacity.</li>
</ul>
<p>Name one person per shift to answer the chats that get handed over, and set a time limit for replying.</p>
<h2 id="try-it-in-test-mode">Try it in test mode</h2>
<p>According to the official guide, you can try the agent in test mode before it goes live and correct its answers right from the chat. The product page suggests chatting with the agent as if you were a customer. The guide doesn&#39;t promise the answers will always be right, so test it with the questions your outlet gets most:</p>
<div class="md-table" role="region" tabindex="0" aria-label="Try it in test mode (table, scrollable)"><table><thead><tr><th scope="col">Test question</th><th scope="col">A correct answer</th></tr></thead><tbody><tr><td>&quot;What time do you open on Sunday?&quot;</td><td>The same hours as your opening-hours sign.</td></tr><tr><td>&quot;How much is a Kopi Susu Aren?&quot;</td><td>Exactly the same price as on your POS.</td></tr><tr><td>&quot;Any promos today?&quot;</td><td>Only promotions running now, with their end time.</td></tr><tr><td>&quot;Can you deliver out of town?&quot;</td><td>Your delivery area, with no promise to deliver outside it.</td></tr><tr><td>&quot;I&#39;m allergic to peanuts. Which items are safe?&quot;</td><td>Promises nothing. The chat goes to a person.</td></tr><tr><td>&quot;My order was short. I want a refund.&quot;</td><td>Promises no refund. The chat goes to a person.</td></tr></tbody></table></div>
<p>How to run it:</p>
<ol>
<li>Ask each question twice in different words, such as &quot;Open Sunday?&quot;.</li>
<li>Correct wrong answers in the chat, then fix the source too: your catalog, price list, or website. Ask again until it&#39;s right.</li>
<li>Run all six questions again whenever your prices, menu, promotions, or opening hours change.</li>
</ol>
<h2 id="what-to-watch-out-for">What to watch out for</h2>
<h3 id="wrong-prices-and-promises">Wrong prices and promises</h3>
<p>Customers read the agent&#39;s replies as your business&#39;s replies. Article 10 of <a href="https://peraturan.bpk.go.id/Details/45288/uu-no-8-tahun-1999" target="_blank" rel="noopener noreferrer">Law No. 8 of 1999 on Consumer Protection</a> bars a business offering goods or services from making false or misleading statements about, among other things, prices and discounts. Keep your catalog&#39;s prices and promotions the same as on your POS, and decide up front what you&#39;ll do if the agent quotes a wrong price.</p>
<h3 id="customer-data">Customer data</h3>
<p>Customers&#39; names, phone numbers, and chat contents are personal data protected by <a href="https://peraturan.bpk.go.id/Details/229798/uu-no-27-tahun-2022" target="_blank" rel="noopener noreferrer">Law No. 27 of 2022 on Personal Data Protection</a>, in force since 17 October 2022. The agent learns from past chats that contain this data. Before you turn it on, read the WhatsApp Business app privacy policy on <a href="https://www.whatsapp.com/legal/" target="_blank" rel="noopener noreferrer">WhatsApp&#39;s legal page</a>, and limit who holds the business phone.</p>
<h3 id="tell-customers">Tell customers</h3>
<p><a href="https://jdih.komdigi.go.id/produk_hukum/view/id/883/t/surat+edaran+menteri+komunikasi+dan+informatika+nomor+9+tahun+2023" target="_blank" rel="noopener noreferrer">Circular Letter of the Minister of Communication and Informatics No. 9 of 2023 on Artificial Intelligence Ethics</a> is addressed to businesses that build AI and to electronic system operators. It&#39;s ethical guidance with no penalties, and its values include transparency and personal data protection, but it doesn&#39;t clearly require telling people that an AI is replying. Meta&#39;s product page doesn&#39;t say whether customers are told either. So tell them yourself, for example in your business profile: &quot;Chat replies may be sent by an AI assistant. Our team answers complaints and refunds directly.&quot;</p>
<h3 id="rules-still-being-prepared">Rules still being prepared</h3>
<p>According to <a href="https://portal.komdigi.go.id/kanal-publik/berita-kini/10425" target="_blank" rel="noopener noreferrer">news from Komdigi of 28 July 2026</a>, the presidential regulation (Perpres) on the AI roadmap and AI ethics only awaits the President&#39;s signature. The news doesn&#39;t say when it will be issued, so watch Komdigi&#39;s site for updates.</p>
<h2 id="orders-from-chat-still-go-into-the-pos">Orders from chat still go into the POS</h2>
<p>An order agreed in a chat only exists in WhatsApp, while your sales report, COGS, and stock are worked out from the orders recorded on your POS. Set the flow:</p>
<ol>
<li>Decide who enters chat orders into the POS on each shift.</li>
<li>Record the order as Takeaway if it&#39;s taken away, or as Dine-in with a table number when the customer arrives.</li>
<li>In Kazeer, the order goes to the kitchen from the same record, so the kitchen doesn&#39;t cook from a screenshot of the chat.</li>
<li>Record the payment on the same order: cash, QRIS, or card.</li>
<li>If a customer cancels in the chat, cancel the order on the POS too. The cancellation stays visible in your records.</li>
</ol>
<p>That way today&#39;s sales report updates itself, and ingredient stock goes down automatically by each item&#39;s recipe. The <a href="https://kazeer.ai/en/blog/kitchen-order-flow/">guide to keeping orders straight from cashier to kitchen</a> covers the whole flow.</p>
<h2 id="start-this-week">Start this week</h2>
<ol>
<li>Open Tools in the WhatsApp Business app and check whether Meta Business Agent is there.</li>
<li>Match your catalog or price list to your POS, and remove promotions that have ended.</li>
<li>Flag topics for a person: allergies, halal, complaints, refunds, and catering.</li>
<li>Test the six questions above and correct the wrong answers.</li>
<li>If you&#39;re unsure, start with only new customers, so your regulars still get a reply from a person.</li>
<li>Say in your business profile that chat replies may come from AI.</li>
</ol>
]]></content:encoded>
      <category>Artificial Intelligence</category>
      <dc:creator>The Kazeer team</dc:creator>
      <pubDate>Tue, 13 Oct 2026 00:00:00 GMT</pubDate>
      <enclosure url="https://kazeer.ai/img/blog/agen-ai-whatsapp-og.jpg" length="69731" type="image/jpeg" />
    </item>
    <item>
      <title>How to raise the average spend per transaction without pushing customers</title>
      <link>https://kazeer.ai/en/blog/raise-average-spend/</link>
      <guid isPermaLink="true">https://kazeer.ai/en/blog/raise-average-spend/</guid>
      <description>Offer one add-on that fits or a bundle that makes sense, then judge the result by gross profit per transaction, not by sales alone.</description>
      <content:encoded><![CDATA[<p>Picture a busy morning at your outlet. Almost every customer orders a Kopi Susu Aren, pays, and leaves. There are fresh croissants at the counter, but hardly anyone adds one to their order.</p>
<p>Sales can grow in two ways: more transactions, or bigger ones. This article is about the second: add-ons offered all day and bundles that make sense, judged by gross profit per transaction, not by sales alone.</p>
<div class="md-note" role="note" data-kind="example"><p><strong>Example:</strong> Every price, COGS figure, and sales number in this article is an example, not data from a real business.</p>
</div>
<h2 id="what-average-spend-means">What average spend means</h2>
<p>Average spend per transaction is sales divided by the number of transactions. One transaction is one payment, so it can cover one person&#39;s order or a table of four. It isn&#39;t spend per person.</p>
<p>Say yesterday&#39;s sales were Rp4,250,000 from 186 transactions. Average spend was Rp4,250,000 ÷ 186 = Rp22,849 (rounded), close to the price of one Kopi Susu Aren at Rp22,000. Chances are many transactions held just one drink.</p>
<p>Work out gross profit per transaction too: gross profit divided by transactions. If yesterday&#39;s COGS was Rp1,700,000, gross profit was Rp4,250,000 − Rp1,700,000 = Rp2,550,000, and gross profit per transaction was Rp2,550,000 ÷ 186 = Rp13,710. This number matters because a discounted bundle can raise average spend while lowering gross profit per transaction.</p>
<p>In Kazeer, sales and gross profit are in your reports, and today&#39;s sales report updates itself, with no manual recap. You can also ask Kazeer AI for yesterday&#39;s transaction count, along with sales and the top seller. Write all three numbers down every morning. For the basics of reading sales and transactions, see <a href="https://kazeer.ai/en/blog/daily-sales-report/">how to read your daily sales report</a>.</p>
<h2 id="pick-a-pairing-that-makes-sense">Pick a pairing that makes sense</h2>
<p>Start with your main item, the one ordered most often. Look at the list of items sold in your sales records, or ask Kazeer AI &quot;What sells best?&quot; (&quot;Apa yang paling laku?&quot;) on the web or in WhatsApp.</p>
<p>Then pick one add-on that people usually have with the main item, that&#39;s quick to serve, and that you have enough ingredients for through a two-week trial. If two add-ons fit equally well, pick the one with more gross profit per serving. Croissant Butter (Rp20,000, COGS Rp8,600) leaves Rp11,400, while Roti Bakar (Rp15,000, COGS Rp7,000) leaves Rp8,000.</p>
<p>There are two ways to offer it:</p>
<div class="md-table" role="region" tabindex="0" aria-label="Pick a pairing that makes sense (table, scrollable)"><table><thead><tr><td></td><th scope="col">Add-on at the regular price</th><th scope="col">Bundle</th></tr></thead><tbody><tr><th scope="row">Price</th><td>The regular price</td><td>One price, lower than buying separately</td></tr><tr><th scope="row">Gross profit on each add-on</th><td>All of it</td><td>Less, by the size of the discount</td></tr><tr><th scope="row">What to watch</th><td>The cashier offers it every time</td><td>Customers who would have bought both anyway get the discount too</td></tr></tbody></table></div>
<p>Start with the add-on at the regular price, since you give nothing away. If the result is small after two weeks, try a bundle. Run one pairing at a time, so you know which change made the difference.</p>
<p>The bundle here runs all day. Discounts for certain hours only are covered in the <a href="https://kazeer.ai/en/blog/slow-hour-promotions/">article on slow-hour promotions</a>.</p>
<h2 id="work-out-the-gross-profit-on-each-offer">Work out the gross profit on each offer</h2>
<p>Before you offer anything, work out its gross profit using COGS per item. In Kazeer, COGS per item can be calculated from the item&#39;s recipe. If you don&#39;t have the figures yet, start with the <a href="https://kazeer.ai/en/blog/cogs-per-menu-item/">guide to COGS per menu item</a>.</p>
<div class="md-table" role="region" tabindex="0" aria-label="Work out the gross profit on each offer (table, scrollable)"><table><thead><tr><th scope="col">What&#39;s in the transaction (example)</th><th scope="col" style="text-align:right">Price</th><th scope="col" style="text-align:right">COGS</th><th scope="col" style="text-align:right">Gross profit</th><th scope="col" style="text-align:right">COGS percentage</th></tr></thead><tbody><tr><td>Kopi Susu Aren only</td><td style="text-align:right">Rp22,000</td><td style="text-align:right">Rp8,400</td><td style="text-align:right">Rp13,600</td><td style="text-align:right">38.2%</td></tr><tr><td>Coffee + Roti Bakar, regular price</td><td style="text-align:right">Rp37,000</td><td style="text-align:right">Rp15,400</td><td style="text-align:right">Rp21,600</td><td style="text-align:right">41.6%</td></tr><tr><td>Coffee + Croissant Butter, regular price</td><td style="text-align:right">Rp42,000</td><td style="text-align:right">Rp17,000</td><td style="text-align:right">Rp25,000</td><td style="text-align:right">40.5%</td></tr><tr><td>Coffee + Croissant Butter bundle</td><td style="text-align:right">Rp38,000</td><td style="text-align:right">Rp17,000</td><td style="text-align:right">Rp21,000</td><td style="text-align:right">44.7%</td></tr></tbody></table></div>
<p>An add-on at the regular price is simple to work out: a coffee buyer who adds a Croissant Butter takes the transaction from Rp22,000 to Rp42,000, and gross profit goes up by Rp11,400 with no discount.</p>
<p>A bundle has to be worked out for two kinds of customer:</p>
<ul role="list">
<li>Customers who would have bought only the coffee, then take the bundle. Gross profit goes from Rp13,600 to Rp21,000, up Rp7,400.</li>
<li>Customers who would have bought the coffee and the croissant anyway. Gross profit goes from Rp25,000 to Rp21,000, down Rp4,000.</li>
</ul>
<div class="md-note" role="note" data-kind="example"><p><strong>Example:</strong> In one day, 10 customers move up from coffee alone to the bundle (10 × Rp7,400 = Rp74,000), and 5 customers who usually buy both pay the bundle price (5 × Rp4,000 = Rp20,000). Gross profit goes up by Rp74,000 − Rp20,000 = Rp54,000 a day.</p>
</div>
<p>Just to cover the Rp20,000 from those 5 customers, you need at least 3 customers moving up to the bundle (3 × Rp7,400 = Rp22,200). Also make sure the bundle&#39;s gross profit (Rp21,000) is higher than the main item&#39;s on its own (Rp13,600). If it isn&#39;t, even customers who move up to the bundle cut your gross profit.</p>
<p>If you go with a bundle, set its price in Kazeer&#39;s promo feature before the first day.</p>
<h2 id="the-menu-board-and-the-counter">The menu board and the counter</h2>
<p>Make the pairing visible before the customer finishes ordering:</p>
<ul role="list">
<li>Write the add-on right under the main item, for example &quot;Kopi Susu Aren Rp22,000&quot; with &quot;Add a Croissant Butter Rp20,000&quot; below it.</li>
<li>Use a name that says what&#39;s in it. &quot;Kopi Susu Aren + Croissant Butter Rp38,000&quot; is clearer than a bundle name customers have to ask about.</li>
<li>Keep the add-on near the counter, such as croissants in a glass jar with a price card.</li>
<li>If the add-on sells out, take its card down for the day, so your cashier doesn&#39;t offer something you don&#39;t have.</li>
</ul>
<h2 id="a-cashier-script-that-helps">A cashier script that helps</h2>
<p>In Kazeer, the cashier picks items on the tablet and the amount to pay is calculated. So the right moment to offer is after the main order is in and before payment. Offer it after payment and the customer has to pay twice.</p>
<p>The rules:</p>
<ol>
<li>Offer one item by name, not &quot;Anything else?&quot;.</li>
<li>Say the price, so the customer can decide on the spot.</li>
<li>Offer once. If the customer says no, accept it and move on to payment.</li>
<li>If the customer has already ordered food, skip the offer.</li>
</ol>
<p>A sample script:</p>
<ul role="list">
<li>Cashier: &quot;One Kopi Susu Aren. Would you like a Croissant Butter with it? It&#39;s Rp20,000 more.&quot;</li>
<li>Customer: &quot;No, thanks.&quot;</li>
<li>Cashier: &quot;Sure, that&#39;s Rp22,000. Cash or QRIS?&quot;</li>
</ul>
<p>For the bundle: &quot;Would you like it as a bundle with a Croissant Butter? That comes to Rp38,000.&quot;</p>
<p>For a new cashier, practice this script on days 1 and 2, when they learn the menu and take orders. The plan is in the <a href="https://kazeer.ai/en/blog/training-a-new-cashier/">guide to training a new cashier</a>. Judge cashiers on whether they offer it the right way, not on how many customers say yes. A per-cashier target can turn an offer into pressure.</p>
<h2 id="judging-the-result">Judging the result</h2>
<p>Compare the two weeks before the change with the two weeks after, on the same days: weekdays with weekdays, weekends with weekends. Leave out unusual days, such as public holidays or a day of heavy rain.</p>
<p>The example below is an average weekday, before and after the cashiers offered Croissant Butter at the regular price.</p>
<div class="md-table" role="region" tabindex="0" aria-label="Judging the result (table, scrollable)"><table><thead><tr><th scope="col">Average per weekday</th><th scope="col" style="text-align:right">Before</th><th scope="col" style="text-align:right">After</th><th scope="col">Change</th></tr></thead><tbody><tr><td>Transactions</td><td style="text-align:right">186</td><td style="text-align:right">186</td><td>same</td></tr><tr><td>Croissant Butter sold</td><td style="text-align:right">10</td><td style="text-align:right">25</td><td>up 15</td></tr><tr><td>Sales</td><td style="text-align:right">Rp4,250,000</td><td style="text-align:right">Rp4,550,000</td><td>up Rp300,000</td></tr><tr><td>Average spend</td><td style="text-align:right">Rp22,849</td><td style="text-align:right">Rp24,462</td><td>up Rp1,613</td></tr><tr><td>COGS percentage</td><td style="text-align:right">40.0%</td><td style="text-align:right">40.2%</td><td>up 0.2 points</td></tr><tr><td>Gross profit</td><td style="text-align:right">Rp2,550,000</td><td style="text-align:right">Rp2,721,000</td><td>up Rp171,000</td></tr><tr><td>Gross profit per transaction</td><td style="text-align:right">Rp13,710</td><td style="text-align:right">Rp14,629</td><td>up Rp919</td></tr></tbody></table></div>
<p>How to read it:</p>
<ul role="list">
<li>Transactions stayed at 186, so there&#39;s no sign the offer put customers off.</li>
<li>Sales went up by 15 × Rp20,000 = Rp300,000 a day, and COGS by 15 × Rp8,600 = Rp129,000.</li>
<li>The COGS percentage went up a little, because Croissant Butter&#39;s COGS is 43% of its price, above the 40.0% average. That&#39;s fine as long as gross profit per transaction goes up. Gross profit grew by 15 × Rp11,400 = Rp171,000 a day.</li>
</ul>
<p>The Croissant Butter count is in the list of items sold in your sales records. The other numbers come from your Kazeer reports and your morning notes.</p>
<p>Then decide:</p>
<ul role="list">
<li>Transactions fell: check whether the offer slows the queue or makes customers uncomfortable.</li>
<li>Average spend barely moved: check that cashiers always offer it, then try another add-on or a bundle.</li>
<li>Average spend rose but gross profit per transaction fell: the bundle is mostly going to customers who would have bought both anyway. Raise the bundle price, or go back to the regular price.</li>
<li>Both rose and transactions held: keep going.</li>
</ul>
<h2 id="start-this-week">Start this week</h2>
<ol>
<li>For two weeks, write down sales, gross profit, and the transaction count every day, then work out average spend and gross profit per transaction.</li>
<li>Choose your main item from the list of items sold or the answer to &quot;What sells best?&quot;.</li>
<li>Pick one add-on that goes with it, is quick to serve, and that you have enough ingredients for.</li>
<li>Work out the gross profit. If you use a bundle, set its price in Kazeer&#39;s promo feature.</li>
<li>Write the pairing on your menu board, and keep the add-on near the counter.</li>
<li>Train your cashiers to offer it once, after the main order and before payment.</li>
<li>After two weeks, compare with the two weeks before on the same days, then decide: keep it, change it, or stop it.</li>
</ol>
]]></content:encoded>
      <category>Marketing</category>
      <dc:creator>The Kazeer team</dc:creator>
      <pubDate>Tue, 13 Oct 2026 00:00:00 GMT</pubDate>
      <enclosure url="https://kazeer.ai/img/blog/rata-rata-belanja-og.jpg" length="102288" type="image/jpeg" />
    </item>
    <item>
      <title>Ask Maps now works in Indonesian: get your outlet&#39;s Google Business Profile right</title>
      <link>https://kazeer.ai/en/blog/ask-maps-and-google-business-profile/</link>
      <guid isPermaLink="true">https://kazeer.ai/en/blog/ask-maps-and-google-business-profile/</guid>
      <description>Since August 2026, you can ask Google Maps questions in Indonesian. See what customers see, tidy up your profile, and reply to reviews the right way.</description>
      <content:encoded><![CDATA[<p>Picture this: someone stands a short walk from your outlet and asks Google Maps, &quot;Is there a quiet cafe around here where we can talk?&quot; Maps answers with suggested places. If the hours on your Google profile are wrong, or your menu there still shows old prices, that person may pick somewhere else, or arrive expecting something you don&#39;t offer.</p>
<p>Since August 2026, people in Indonesia can ask questions like that in Indonesian. Your job stays simple: a correct, honest profile and good replies to reviews.</p>
<div class="md-note" role="note" data-kind="note"><p><strong>Note:</strong> What this article says about Google Maps, Gemini, and Google Business Profile comes from Google&#39;s official blog and help pages, read on 13 October 2026, and it may change. Kazeer is not affiliated with Google. The street name, questions, and prices here are examples.</p>
</div>
<h2 id="what-ask-maps-is-and-since-when">What Ask Maps is, and since when</h2>
<p>Ask Maps is a question-and-answer feature in Google Maps that uses Gemini, Google&#39;s AI. People ask in ordinary sentences, typed or spoken, and Maps answers with suggested places.</p>
<ul role="list">
<li>12 March 2026: Google <a href="https://blog.google/intl/en-in/products/explore-communicate/ask-anything-about-any-place-on-maps-with-gemini/" target="_blank" rel="noopener noreferrer">introduced Ask Maps</a>, first in the United States and India.</li>
<li>6 August 2026: Google Indonesia <a href="https://blog.google/intl/id-id/products/explore-get-answers/ask-maps-kini-hadir-di-indonesia/" target="_blank" rel="noopener noreferrer">announced that Ask Maps is available in Indonesia</a>, in English and Indonesian. One of its examples is finding a quiet cafe for a chat.</li>
</ul>
<p>According to the March announcement, Ask Maps answers draw on place information, user reviews, and web content, and they can be tailored to the past searches and saved places of the person asking.</p>
<div class="md-table" role="region" tabindex="0" aria-label="What Ask Maps is, and since when (table, scrollable)"><table><thead><tr><th scope="col">Still unclear</th><th scope="col">Status on 13 October 2026</th></tr></thead><tbody><tr><td>How Google picks the places it suggests</td><td>Google hasn&#39;t said</td></tr><tr><td>Booking a restaurant table through Ask Maps</td><td>Mentioned in the India announcement, not mentioned for Indonesia</td></tr></tbody></table></div>
<p>Because Google hasn&#39;t said how places are picked, there is no ranking trick anyone can be sure of. A service that promises your outlet will show up in Ask Maps has nothing to base that promise on. What you can control is the information about your own outlet.</p>
<h2 id="see-your-outlet-the-way-customers-do">See your outlet the way customers do</h2>
<p>In the March announcement, Google explains how: open Google Maps, tap the Ask Maps button, then ask by text or voice.</p>
<p>Ask three or four questions your customers might ask, and name your outlet&#39;s area. For a cafe on Jalan Kaliurang, for example:</p>
<ol>
<li>A quiet cafe for a chat near Jalan Kaliurang.</li>
<li>A place for breakfast that opens at 07:00 near Jalan Kaliurang.</li>
<li>What time does (your outlet&#39;s name) open on Sunday, and what do the reviews say?</li>
</ol>
<p>Write down what you find, something like this:</p>
<div class="md-table" role="region" tabindex="0" aria-label="See your outlet the way customers do (table, scrollable)"><table><thead><tr><th scope="col">Question</th><th scope="col">Your outlet mentioned?</th><th scope="col">What needs fixing</th></tr></thead><tbody><tr><td>Quiet cafe for a chat</td><td>Yes</td><td>Closing time shows 21:00, but you close at 22:00</td></tr><tr><td>Breakfast at 07:00</td><td>No</td><td>Your profile has no breakfast menu</td></tr></tbody></table></div>
<p>The answers you see can differ from what a customer sees, so use these notes to find wrong or missing information, not to measure a ranking. If an answer mentions a complaint from reviews, such as slow orders on weekends, talk it over with your team first and fix it at the outlet.</p>
<h2 id="tidy-up-your-google-business-profile">Tidy up your Google Business Profile</h2>
<p>Ask Maps draws on place information and reviews. The information about your own outlet is what you manage in your Google Business Profile, your outlet&#39;s page on Google Maps and Google Search. The basics stay the same: correct hours and special hours, a menu with the same prices as on your POS, photos of dishes you really serve, and true attributes. The <a href="https://kazeer.ai/en/blog/google-business-profile/">Google Business Profile guide</a> walks through each one.</p>
<p>What&#39;s new is AI in the menu editor. According to Google, the menu editor for food and drink businesses has <a href="https://support.google.com/business/answer/3039617?hl=en" target="_blank" rel="noopener noreferrer">limited availability</a>, so your profile may not have it yet. If it does, note two things from the <a href="https://support.google.com/business/answer/9455840?hl=en" target="_blank" rel="noopener noreferrer">menu editor help page</a>:</p>
<ul role="list">
<li>You can build a menu from a photo or a PDF: AI turns it into items, descriptions, and prices. Google calls this feature experimental and asks you to review the menu.</li>
<li>Google may copy a menu from your business website. If the menu on your site is out of date, update it, or opt out through the link on that help page.</li>
</ul>
<div class="md-note" role="note" data-kind="example"><p><strong>Example:</strong> Kopi Susu Aren costs Rp22,000 on your POS, but the old menu photo you uploaded still says Rp20,000. The AI reads the price from the photo. If you don&#39;t check it, Google shows Rp20,000 and customers find out the real price only when they pay. Check every price before you publish the menu.</p>
</div>
<h2 id="gemini-for-your-business-profile">Gemini for your Business Profile</h2>
<p>On 10 June 2026, Google <a href="https://blog.google/innovation-and-ai/products/gemini-app/gemini-features-for-businesses/" target="_blank" rel="noopener noreferrer">announced</a> that business owners can connect their Google Business Profile to Gemini. Once it is connected, Gemini uses your reviews, customer questions, and profile performance data to answer you. The rollout was scheduled to start that month, except in the European Economic Area and the UK.</p>
<p>According to <a href="https://support.google.com/business/answer/17142585?hl=en" target="_blank" rel="noopener noreferrer">Google&#39;s help page</a>, in the Gemini web app you can change your hours, menu, photos, attributes, and contact details; draft review replies; create and schedule Update, Offer, and Event posts; summarize review themes; and see profile performance and search keywords.</p>
<p>The requirements:</p>
<ul role="list">
<li>You own or manage only one verified Business Profile.</li>
<li>You are 18 or older.</li>
<li>You use a personal Google Account. Work and school accounts aren&#39;t supported yet.</li>
<li>Keep Activity is turned on in Gemini.</li>
</ul>
<p>Indonesian is one of the supported languages, but the feature is being released gradually and may not show up in your account yet. If you own several outlets, each with its own verified profile, you can&#39;t use it, so manage each profile the usual way. Kazeer&#39;s catalog is managed per outlet, so match the menu on each profile with that outlet&#39;s catalog.</p>
<p>To start, go to gemini.google.com with the same account you use for your Business Profile, then ask something about your profile. If it isn&#39;t connected, Gemini offers to connect it. If Gemini doesn&#39;t use your profile data, add @Google Business Profile to your request, for example:</p>
<ul role="list">
<li>&quot;Summarize the complaints that come up most often in this month&#39;s reviews.&quot;</li>
<li>&quot;Change my Sunday hours to 08:00 to 21:00.&quot;</li>
</ul>
<p>Customers will see what you change through Gemini on your profile, so check the result on Google Maps. If you put up an Offer post for a promo price, set the same price in Kazeer&#39;s promo feature, so your cashier charges what Google shows. For how to cost a promotion that still leaves a profit, see the <a href="https://kazeer.ai/en/blog/slow-hour-promotions/">article on slow-hour promotions</a>.</p>
<h2 id="reviews-ai-drafts-you-decide">Reviews: AI drafts, you decide</h2>
<p>According to <a href="https://support.google.com/business/answer/3474050?hl=en" target="_blank" rel="noopener noreferrer">Google&#39;s help page on replying to reviews</a>, your business must be verified before you can reply. Replies are checked against Google&#39;s content policies first, which usually takes up to 10 minutes but can take up to 30 days. Once approved, a reply appears publicly under the review, in your business&#39;s name.</p>
<p>The Gemini help page doesn&#39;t say whether a drafted reply posts right away or waits for your approval. Treat every draft as unfinished: read it and edit it before it goes out.</p>
<p><a href="https://support.google.com/contributionpolicy/answer/7400114?hl=en" target="_blank" rel="noopener noreferrer">Google Maps content policy</a> bans businesses from:</p>
<ul role="list">
<li>offering anything in return for a review, such as money, discounts, or free goods and services;</li>
<li>asking only happy customers for reviews, or discouraging negative ones;</li>
<li>asking staff to collect a set number of reviews.</li>
</ul>
<p>So &quot;10% off for a five-star review&quot; and &quot;a target of 5 reviews per shift&quot; both break the rules. Reviews by your own staff can also count as a conflict of interest. Ask every customer for a review the same way, for example with a QR code near the POS.</p>
<p>How to reply to reviews, with a sample reply to a complaint, is in the <a href="https://kazeer.ai/en/blog/google-business-profile/">Google Business Profile guide</a>. When you edit a draft from Gemini, check three things:</p>
<ol>
<li>The draft only covers what&#39;s in the review. Delete anything the review doesn&#39;t mention.</li>
<li>Any step it mentions is one you have really taken. Delete promises you can&#39;t keep.</li>
<li>There&#39;s no customer data, such as a phone number or order details from your POS records. Don&#39;t paste that data into a request to an AI either.</li>
</ol>
<h2 id="a-monthly-routine">A monthly routine</h2>
<p>Pick one fixed day each month, such as the first Monday:</p>
<ol>
<li>Ask your Ask Maps questions again, then compare the answers with last month&#39;s notes.</li>
<li>Run the monthly checklist in the <a href="https://kazeer.ai/en/blog/google-business-profile/">Google Business Profile guide</a>: special hours, menu and prices, reviews, photos, and posts.</li>
<li>If your menu on Google was built from a photo or copied from your website, match every price with the price on your Kazeer POS. Menu changes can take 24 to 48 hours to show, so check again two days later.</li>
<li>Summarize this month&#39;s review themes, yourself or with Gemini, then pick one complaint to fix.</li>
<li>Compare the items reviewers praise most with how well they sell. Ask Kazeer AI &quot;What sells best?&quot; (&quot;Apa yang paling laku?&quot;), then map your menu the way the <a href="https://kazeer.ai/en/blog/best-sellers-vs-most-profitable/">article on best sellers and the most profitable items</a> shows.</li>
</ol>
]]></content:encoded>
      <category>Artificial Intelligence</category>
      <dc:creator>The Kazeer team</dc:creator>
      <pubDate>Tue, 13 Oct 2026 00:00:00 GMT</pubDate>
      <enclosure url="https://kazeer.ai/img/blog/ask-maps-google-og.jpg" length="136329" type="image/jpeg" />
    </item>
    <item>
      <title>Bring customers back through WhatsApp, with their permission</title>
      <link>https://kazeer.ai/en/blog/bring-customers-back-whatsapp/</link>
      <guid isPermaLink="true">https://kazeer.ai/en/blog/bring-customers-back-whatsapp/</guid>
      <description>Send menu news to regulars who said yes: how to ask permission, set up WhatsApp Business, write the message, and judge the results.</description>
      <content:encoded><![CDATA[<p>Picture this: a regular who used to drop by almost every morning hasn&#39;t been in for three weeks. The croissant they always ordered is back on the menu, but they don&#39;t know.</p>
<p>You can send news like that through WhatsApp, as long as the customer has agreed to receive it. This article covers the permission, the messages, and how to judge the results from your sales records. The focus is useful messages, not discounts.</p>
<div class="md-note" role="note" data-kind="note"><p><strong>Note:</strong> The WhatsApp features and rules here follow WhatsApp&#39;s official policy and Help Center as of October 2026, and they can change. Menu names on your phone may differ slightly. Every sales figure is an example.</p>
</div>
<h2 id="start-with-permission">Start with permission</h2>
<p>The <a href="https://business.whatsapp.com/policy" target="_blank" rel="noopener noreferrer">WhatsApp Business Messaging Policy</a>, last updated 23 September 2026, also applies to the WhatsApp Business app. You may only contact people who have given you their number and agreed to receive messages from you. How you ask for that permission is your responsibility.</p>
<p>The simplest way to do it at your outlet:</p>
<ol>
<li>Open the short link in WhatsApp Business. Every account gets a short link and a QR code automatically. Set its default message, such as &quot;Hi, I&#39;d like news about new menu items and opening hours.&quot;</li>
<li>Print the QR code on a table card, with one sentence on what you&#39;ll send and how to stop.</li>
<li>When a customer pays, the cashier can ask, &quot;Would you like news about new menu items on WhatsApp?&quot; If they say yes, the customer scans the code and sends the message themselves.</li>
</ol>
<p>That way, the number and the permission come from the customer. Never add numbers quietly, for example from your order records. Before you print a lot of cards: the <a href="https://faq.whatsapp.com/888878128766436" target="_blank" rel="noopener noreferrer">QR code</a> doesn&#39;t expire, but if you reset it, the old code stops working.</p>
<p>Write down what each person agreed to, such as &quot;new menu items and holiday hours&quot;, and the date. If someone asks to stop, in a chat or in person at the counter, remove them from your list that same day. WhatsApp&#39;s policy requires you to respect that request, including removing them from your contacts list.</p>
<h2 id="set-up-whatsapp-business">Set up WhatsApp Business</h2>
<p><a href="https://faq.whatsapp.com/641572844337957" target="_blank" rel="noopener noreferrer">WhatsApp Business</a> is a free app for Android and iPhone. You can&#39;t use one number on regular WhatsApp and WhatsApp Business at the same time, but you can move it from one to the other. Use the outlet&#39;s number, not a staff member&#39;s personal number.</p>
<p>Set these up before your first message:</p>
<div class="md-table" role="region" tabindex="0" aria-label="Set up WhatsApp Business (table, scrollable)"><table><thead><tr><th scope="col">Part</th><th scope="col">What to set up</th></tr></thead><tbody><tr><td>Business profile</td><td>Name, address, category, description, and opening hours. A complete profile means fewer questions about your hours.</td></tr><tr><td>Catalog</td><td>Tools &gt; Catalog &gt; Add new item, with up to 10 photos or videos per item. Items appear once WhatsApp approves them.</td></tr><tr><td>Quick replies</td><td>Up to 50 ready answers, such as your address and opening hours. Type &quot;/&quot; in a chat to use them.</td></tr><tr><td>Greeting message</td><td>Sent automatically when a customer messages you for the first time, or after 14 days with no chat.</td></tr><tr><td>Away message</td><td>Sent automatically on a schedule, such as outside your opening hours. That schedule needs opening hours in your profile, and the phone needs an internet connection.</td></tr></tbody></table></div>
<p>As of October 2026, labels are gradually being replaced by lists. While you still have labels, you can create up to 20. Make one label or list, such as &quot;Agreed to news&quot;, for customers who have given permission.</p>
<h2 id="what-to-send-and-how-often">What to send, and how often</h2>
<p>One message, one reason: a new item, a seasonal item coming back, opening hours over a long holiday, or a temporary closure. Keep to what people agreed to: agreeing to news about new items is not agreeing to a message every day.</p>
<div class="md-note" role="note" data-kind="example"><p><strong>Example:</strong> Hi, Croissant Butter is back, every day from 07:00. If you drop by, show this message to the cashier so we know it reached you. Reply &quot;stop&quot; if you&#39;d rather not get news from us.</p>
</div>
<p>How often? No number fits every outlet. As a starting point, send only when there&#39;s real news, say no more than twice a month. After each message, count how many people ask to stop. If that number goes up, send less often.</p>
<p><a href="https://faq.whatsapp.com/1655751878365653" target="_blank" rel="noopener noreferrer">WhatsApp&#39;s Help Center</a> suggests: send only to people who opted in, remove contacts who haven&#39;t interacted with you recently, and make your messages match what people signed up for. WhatsApp&#39;s policy also prohibits promoting alcohol and tobacco through the WhatsApp Business app.</p>
<p>If the message carries a bundle price or promo price, work out its gross profit first with the <a href="https://kazeer.ai/en/blog/slow-hour-promotions/">guide to slow-hour promotions</a>, then set the price in Kazeer&#39;s promo feature before you send the message.</p>
<h2 id="broadcast-lists-or-business-broadcasts">Broadcast lists or business broadcasts</h2>
<p>WhatsApp Business has two ways to send one message to many customers. The permission rules are the same for both.</p>
<p><a href="https://faq.whatsapp.com/861663048350950" target="_blank" rel="noopener noreferrer">Broadcast lists</a>:</p>
<ul role="list">
<li>Up to 256 contacts per list, and as many lists as you like.</li>
<li>Only people who have saved your number receive the message. So add a line to your table card: &quot;Save this number so our news reaches you.&quot;</li>
<li>Not available on Windows, Mac, or Web. A monthly broadcast limit is rolling out gradually in some countries.</li>
</ul>
<p><a href="https://faq.whatsapp.com/1711086883148106" target="_blank" rel="noopener noreferrer">Business broadcasts</a>, the new name for marketing messages in some countries:</p>
<ul role="list">
<li>Only in the WhatsApp Business app. You pay for each message delivered within five days, and the funds for messages that aren&#39;t delivered are credited back.</li>
<li>Reviewed by Meta before sending, can be scheduled, and can carry buttons, such as one that opens your catalog.</li>
<li><a href="https://faq.whatsapp.com/653415899610349" target="_blank" rel="noopener noreferrer">Can reach</a> contacts who haven&#39;t saved your number, and <a href="https://faq.whatsapp.com/1524953031793983" target="_blank" rel="noopener noreferrer">show</a> how many recipients read and replied.</li>
<li>If many recipients report or block you, your account gets a warning. If the spam continues, business broadcasts are <a href="https://faq.whatsapp.com/1655751878365653" target="_blank" rel="noopener noreferrer">suspended for three days</a>, with no appeal.</li>
<li>Only available in some countries so far. <a href="https://faq.whatsapp.com/1356785542323967" target="_blank" rel="noopener noreferrer">A rupiah rate</a> is listed, but that doesn&#39;t confirm the feature is available in Indonesia. Check in your own app.</li>
</ul>
<p>On 3 April 2025, <a href="https://about.fb.com/news/2025/04/ways-to-manage-your-businesses-chats-on-whatsapp/" target="_blank" rel="noopener noreferrer">Meta announced</a> that business broadcasts would become a paid feature so businesses think carefully about what they send, along with limits on how many marketing messages a person receives. For a small list of regulars, a broadcast list is usually enough.</p>
<h2 id="look-after-customer-data">Look after customer data</h2>
<p>Customer numbers and chats are personal data. Habits that help:</p>
<ul role="list">
<li>Keep the customer list on the outlet&#39;s business phone, not on staff&#39;s personal phones.</li>
<li>Never forward a customer&#39;s chat to another customer. WhatsApp&#39;s policy prohibits it.</li>
<li>Never ask for full card numbers, account numbers, or ID numbers in a chat. That&#39;s prohibited too.</li>
<li>Set up a privacy policy your customers can read. WhatsApp&#39;s policy asks businesses to have one published.</li>
</ul>
<p>Indonesia also has <a href="https://peraturan.bpk.go.id/Details/229798/uu-no-27-tahun-2022" target="_blank" rel="noopener noreferrer">Law No. 27 of 2022 on Personal Data Protection</a> (UU 27/2022), in force since 17 October 2022. For your business&#39;s specific obligations, ask a legal adviser.</p>
<p>You send these messages yourself from WhatsApp Business, not from Kazeer. Kazeer records orders and sales, so you can measure the results.</p>
<h2 id="measure-from-your-sales-records">Measure from your sales records</h2>
<p>A message that gets read doesn&#39;t always bring people in, so measure it from your sales records. Before you send, decide:</p>
<ol>
<li>The item you&#39;re announcing, such as Croissant Butter.</li>
<li>The comparison: the 7 days after the message goes out, against the 7 days before, when the item was already on the menu but not yet announced. For a new item, rely on the tally sheet.</li>
<li>A tally sheet by the POS: the cashier makes one mark for each customer who shows or mentions the message.</li>
</ol>
<p>In Kazeer, sales records show the items sold and the sales results. From there, note the servings of Croissant Butter each day in both periods. Kazeer reports also show sales, COGS, and gross profit, and the COGS of each item can be calculated from its recipe.</p>
<div class="md-note" role="note" data-kind="example"><p><strong>Example:</strong> Croissant Butter sells for Rp20,000 with a COGS of Rp8,600, as in the <a href="https://kazeer.ai/en/blog/best-sellers-vs-most-profitable/">article on best sellers and the most profitable items</a>. Its gross profit is Rp20,000 − Rp8,600 = Rp11,400 per serving.</p>
</div>
<div class="md-table" role="region" tabindex="0" aria-label="Measure from your sales records (table, scrollable)"><table><thead><tr><th scope="col">Croissant Butter (example)</th><th scope="col" style="text-align:right">7 days before</th><th scope="col" style="text-align:right">7 days after the message</th><th scope="col">Change</th></tr></thead><tbody><tr><td>Servings sold</td><td style="text-align:right">18</td><td style="text-align:right">30</td><td>up 12</td></tr><tr><td>Sales</td><td style="text-align:right">Rp360,000</td><td style="text-align:right">Rp600,000</td><td>up Rp240,000</td></tr><tr><td>Gross profit</td><td style="text-align:right">Rp205,200</td><td style="text-align:right">Rp342,000</td><td>up Rp136,800</td></tr></tbody></table></div>
<p>The extra gross profit is 12 × Rp11,400 = Rp136,800, at the regular price. The tally sheet shows 8 customers who showed the message. So the message did reach buyers, but part of the rise may have other causes.</p>
<p>Weather, public holidays, events near your outlet, and menu changes also move sales. Leave unusual days out of the comparison, and look at the results of several messages before you draw conclusions. If you use paid business broadcasts, subtract their cost from the extra gross profit.</p>
<h2 id="checklist-before-your-first-message">Checklist before your first message</h2>
<ol>
<li>Install WhatsApp Business with the outlet&#39;s number, then fill in your profile, quick replies, greeting message, and away message.</li>
<li>Set the default message on your short link, then print the QR code on a table card with what you&#39;ll send and how to stop.</li>
<li>Ask your cashiers to offer without pushing. Never add numbers quietly.</li>
<li>Write down what each customer agreed to, then group them in one label or list.</li>
<li>Write one message for one reason, with how to stop at the end. If it has a promo price, work out the gross profit first.</li>
<li>Set up the tally sheet by the POS, then compare servings sold in the 7 days before and after the message.</li>
<li>Remove anyone who asks to stop on the same day.</li>
</ol>
]]></content:encoded>
      <category>Marketing</category>
      <dc:creator>The Kazeer team</dc:creator>
      <pubDate>Tue, 13 Oct 2026 00:00:00 GMT</pubDate>
      <enclosure url="https://kazeer.ai/img/blog/pelanggan-kembali-whatsapp-og.jpg" length="78944" type="image/jpeg" />
    </item>
    <item>
      <title>The GrabMerchant AI assistant: check menus, descriptions, and promos before they go live</title>
      <link>https://kazeer.ai/en/blog/grabmerchant-ai-assistant-menus-promos/</link>
      <guid isPermaLink="true">https://kazeer.ai/en/blog/grabmerchant-ai-assistant-menus-promos/</guid>
      <description>The AI assistant in GrabMerchant can scan menus, write descriptions, and suggest promos. Here&#39;s what to check before any of it reaches your customers.</description>
      <content:encoded><![CDATA[<p>Picture this: you&#39;ve just signed your restaurant up for GrabFood with a printed menu of dozens of items. The AI assistant in the GrabMerchant app can scan that menu, write the descriptions, and suggest promos. The work goes faster. But what shows up in the app is your promise to customers. A misread price, an overblown description, or a promo that leaves almost nothing over is still yours to answer for.</p>
<p>This article covers what the assistant can help with, and what you need to check: the scanned menu, descriptions, photos, promos, and review replies.</p>
<div class="md-note" role="note" data-kind="note"><p><strong>Note:</strong> Facts about Grab&#39;s features come from Grab&#39;s official releases and blog posts linked below, as of October 2026. Feature names and screens in your app may differ. The parts about the law are a summary, not legal advice.</p>
</div>
<h2 id="what-the-grabmerchant-ai-assistant-can-do">What the GrabMerchant AI assistant can do</h2>
<p>Grab announced its AI Merchant Assistant on <a href="https://investors.grab.com/news-and-events/news-details/2025/Grab-deploys-agentic-AI-to-empower-merchants-and-driver-partners-2025-KuA890N398/default.aspx" target="_blank" rel="noopener noreferrer">9 April 2025</a> as a chatbot in the GrabMerchant app, without naming the countries. In Indonesia, the assistant is covered in <a href="https://www.grab.com/id/press/others/asisten-ai-grabmerchant-bantu-mitra-merchant-ambil-keputusan-bisnis-lebih-cepat-dan-berbasis-data/" target="_blank" rel="noopener noreferrer">Grab Indonesia&#39;s release dated 3 July 2026</a>, written for GrabFood merchant partners. According to that release, the assistant uses your store&#39;s own sales data automatically, and merchants use it to:</p>
<ul role="list">
<li>Turn a printed menu into a digital menu in the app (Menu Scanner).</li>
<li>Write menu descriptions with AI (Description Generator).</li>
<li>Help respond to customer reviews.</li>
<li>Help plan promotions.</li>
<li>Get guidance through an instant guidance button on the store insights page.</li>
</ul>
<p>For questions about the sales recorded at your outlet&#39;s POS, see the <a href="https://kazeer.ai/en/blog/ask-kazeer-ai/">article on asking Kazeer AI</a>.</p>
<p>The release doesn&#39;t say whether every feature is available to every merchant. If you can&#39;t find one, ask the GrabMerchant help center.</p>
<p>The rule for all of these features: the AI suggests, you decide.</p>
<h2 id="scanning-a-printed-menu">Scanning a printed menu</h2>
<p>In <a href="https://www.grab.com/inside-grab/stories/grabs-new-ai-tool-makes-menu-management-a-snap-for-merchants/" target="_blank" rel="noopener noreferrer">Grab&#39;s write-up of its menu scanning tool (November 2024)</a>, merchants take a picture of their physical menu, AI sorts the text into menu fields, and merchants review and edit before publishing. At that point it read only the title, description, price, and category. Menu options such as spice level or size weren&#39;t included, and Grab said accuracy across the languages it supports in the region was still being worked on.</p>
<p>So treat the scan as a draft. Check it line by line with the printed menu next to you:</p>
<div class="md-table" role="region" tabindex="0" aria-label="Scanning a printed menu (table, scrollable)"><table><thead><tr><th scope="col">What to check</th><th scope="col">Example mistakes</th><th scope="col">How to check</th></tr></thead><tbody><tr><td>Item name</td><td>Misread letters, abbreviations, a name the kitchen doesn&#39;t use</td><td>Read it through with your cook or cashier</td></tr><tr><td>Price</td><td>A missing zero, swapped prices, an old price</td><td>Match it to your latest price list</td></tr><tr><td>Options</td><td>Spice level, size, and extra sides not picked up</td><td>Add them yourself, with their prices</td></tr><tr><td>Category</td><td>Drinks under food, bundles under single items</td><td>Go through each category, then open your store page the way a customer would once it&#39;s live</td></tr><tr><td>Items you no longer sell</td><td>Still on the old paper menu</td><td>Delete or deactivate them before publishing</td></tr></tbody></table></div>
<p>If your price in the app differs from your outlet price, make sure you set that difference on purpose.</p>
<h2 id="ai-descriptions-honest-and-specific">AI descriptions: honest and specific</h2>
<p>According to <a href="https://www.grab.com/sg/inside-grab/stories/how-we-use-genai-to-help-grabfood-menu-items-stand-out/" target="_blank" rel="noopener noreferrer">Grab&#39;s 2024 write-up</a>, the description tool uses the merchant&#39;s name, cuisine type, dish name, and dish images, plus keywords the merchant adds. At the time, the tool was listed as available in Singapore, the Philippines, Thailand, Myanmar, and Vietnam. For Indonesia, the Description Generator is named in the July 2026 release.</p>
<p>A useful description answers customers&#39; questions before they ask:</p>
<ul role="list">
<li>What&#39;s in it: the main ingredients and sides.</li>
<li>Portion: how many people, how many pieces, or how many grams.</li>
<li>Spice level, and whether it can come without sambal.</li>
<li>How it&#39;s served: soup or sauce on the side, rice included or not.</li>
</ul>
<p>Cut claims such as &quot;no MSG&quot;, &quot;no preservatives&quot;, &quot;premium ingredients&quot;, &quot;healthy&quot;, or &quot;safe for kids&quot; unless they&#39;re true and you can back them up. Praise such as &quot;the best&quot; or &quot;guaranteed addictive&quot; tells customers nothing. Replace it with what&#39;s in the dish and how much there is.</p>
<p><a href="https://peraturan.bpk.go.id/Details/45288/uu-no-8-tahun-1999" target="_blank" rel="noopener noreferrer">Law No. 8 of 1999 on Consumer Protection</a> covers this too:</p>
<ul role="list">
<li>Article 8(1)(f): businesses may not sell goods that don&#39;t match what was promised on the label, in the description, or in advertising or sales promotion.</li>
<li>Article 9(1): no offering goods untruthfully or as if they had a discount, a special price, a quality standard, or particular characteristics (point a), or using excessive words such as &quot;safe&quot; and &quot;harmless&quot; without full information (point j).</li>
<li>Article 10: no untrue or misleading statements about price, use, or discounts and prizes on offer.</li>
</ul>
<div class="md-note" role="note" data-kind="example"><p><strong>Example:</strong> AI draft: &quot;The best special nasi goreng with hand-picked premium ingredients, healthy and MSG-free, guaranteed addictive!&quot; After editing: &quot;Nasi goreng with sweet soy sauce, a fried egg, shredded chicken, and crackers. Medium spicy, can be made not spicy. Serves one.&quot; The &quot;healthy&quot; and &quot;MSG-free&quot; claims were cut because the kitchen in this example can&#39;t prove them.</p>
</div>
<h2 id="menu-photos-stay-real-photos">Menu photos stay real photos</h2>
<p>The July 2026 release doesn&#39;t mention a tool for making or changing menu photos with AI, and according to Grab&#39;s 2024 write-up, the menu scanner didn&#39;t bring in dish images at that point. So photos are still your job, with the same rule as descriptions: what arrives must match what the customer saw.</p>
<ul role="list">
<li>Photograph dishes your own kitchen actually made, in the usual portion and packaging.</li>
<li>Light edits are reasonable: cropping, straightening, adjusting brightness and contrast.</li>
<li>Don&#39;t add sides, enlarge the portion, change the color of the food, or use an AI-made image as a dish photo.</li>
<li>When the recipe, portion, or packaging changes, replace the photo.</li>
</ul>
<h2 id="promo-suggestions-do-the-math-first">Promo suggestions: do the math first</h2>
<p>Grab&#39;s release says the assistant uses your store&#39;s sales data, but you&#39;re the one who knows your COGS per item. Before you accept a promo suggestion, work out what&#39;s left per order after COGS and the app&#39;s commission.</p>
<div class="md-note" role="note" data-kind="example"><p><strong>Example:</strong> Every number below is an example, including the 20% commission. Use the commission rate that applies to your store.</p>
</div>
<div class="md-table" role="region" tabindex="0" aria-label="Promo suggestions: do the math first (table, scrollable)"><table><thead><tr><th scope="col">Per order (example)</th><th scope="col" style="text-align:right">Regular price</th><th scope="col" style="text-align:right">Promo price</th></tr></thead><tbody><tr><td>Selling price</td><td style="text-align:right">Rp30,000</td><td style="text-align:right">Rp25,000</td></tr><tr><td>App commission (example 20%)</td><td style="text-align:right">Rp6,000</td><td style="text-align:right">Rp5,000</td></tr><tr><td>COGS including packaging</td><td style="text-align:right">Rp12,000</td><td style="text-align:right">Rp12,000</td></tr><tr><td>Left for other costs and profit</td><td style="text-align:right">Rp12,000</td><td style="text-align:right">Rp8,000</td></tr></tbody></table></div>
<p>How to read it: Rp30,000 − Rp6,000 − Rp12,000 = Rp12,000. At the promo price, Rp25,000 − Rp5,000 − Rp12,000 = Rp8,000. Each promo order gives up Rp4,000.</p>
<p>If this item usually gets 10 orders a day, the discount takes away 10 × Rp4,000 = Rp40,000. You need 5 extra orders (5 × Rp8,000 = Rp40,000) just to get back to where you were: without the promo 10 × Rp12,000 = Rp120,000, with it 15 × Rp8,000 = Rp120,000.</p>
<p>This example takes the commission from the promo price. Check GrabMerchant&#39;s terms to see whether commission is based on the price before or after the discount, and who pays for the discount. If the suggestion is a paid ad, add its cost.</p>
<p>Two more limits from the Consumer Protection Law:</p>
<ul role="list">
<li>Article 11(f) bans raising prices before a sale. Don&#39;t raise your regular price ahead of a promo to make the discount look bigger.</li>
<li>Article 12 bans offering a special price for a set time and quantity without meaning to honor it. Have ingredients ready for the quantity you advertise, and run the promo until the date you advertise.</li>
</ul>
<p>In Kazeer, COGS per item can be calculated from the item&#39;s recipe. For delivery orders, add the cost of packaging to your calculation, such as boxes, bags, and spoons. See the <a href="https://kazeer.ai/en/blog/cogs-per-menu-item/">guide to COGS per menu item</a> and the <a href="https://kazeer.ai/en/blog/menu-pricing-from-cogs/">guide to menu pricing</a>. To compare results before and during a promo, follow the <a href="https://kazeer.ai/en/blog/slow-hour-promotions/">article on slow-hour promotions</a>.</p>
<h2 id="replying-to-reviews-with-ai-help">Replying to reviews with AI help</h2>
<p>An AI draft reply saves time, but edit it before you send it:</p>
<ol>
<li>Read the whole review, then check the order: the time, the items, and the customer&#39;s notes.</li>
<li>Delete promises you can&#39;t keep, such as a voucher you don&#39;t offer.</li>
<li>Don&#39;t blame the customer or the driver before you know what happened.</li>
<li>Mention something specific from the review, and leave out the customer&#39;s personal details.</li>
</ol>
<p>A polite reply doesn&#39;t remove the cause. Take repeated complaints to the kitchen:</p>
<div class="md-table" role="region" tabindex="0" aria-label="Replying to reviews with AI help (table, scrollable)"><table><thead><tr><th scope="col">Complaint</th><th scope="col">What to check in the kitchen</th></tr></thead><tbody><tr><td>Small portion</td><td>The amounts in the recipe, then weigh a few portions</td></tr><tr><td>Food arrives cold</td><td>Cooking order, waiting time, and packaging</td></tr><tr><td>Missing items</td><td>A checklist before the bag is sealed</td></tr><tr><td>Taste has changed</td><td>The written recipe, and who cooked on that shift</td></tr></tbody></table></div>
<h2 id="start-with-your-menu">Start with your menu</h2>
<ol>
<li>Scan your latest menu, then check names, prices, options, categories, and items you no longer sell.</li>
<li>Edit the descriptions of your best sellers first, and cut any claim you can&#39;t back up.</li>
<li>Replace photos that no longer match the dish you serve today.</li>
<li>Before accepting a promo, work out what&#39;s left per order using COGS with packaging and your store&#39;s commission.</li>
<li>Read reviews every day, edit the replies, and write down complaints that keep coming back.</li>
</ol>
]]></content:encoded>
      <category>Artificial Intelligence</category>
      <dc:creator>The Kazeer team</dc:creator>
      <pubDate>Tue, 13 Oct 2026 00:00:00 GMT</pubDate>
      <enclosure url="https://kazeer.ai/img/blog/asisten-ai-grabmerchant-og.jpg" length="102601" type="image/jpeg" />
    </item>
    <item>
      <title>How to cash up at the end of the day: count the cash, match QRIS and card</title>
      <link>https://kazeer.ai/en/blog/end-of-day-cash-up/</link>
      <guid isPermaLink="true">https://kazeer.ai/en/blog/end-of-day-cash-up/</guid>
      <description>Match the cash in the drawer with recorded payments every night: the starting float, how to count, recording differences, and a printable checklist.</description>
      <content:encoded><![CDATA[<p>Picture this: it&#39;s ten at night, the outlet is closed, and the cash drawer is Rp20,000 short. If you only notice a week later, nobody remembers which transaction went wrong. If you notice that same night, the cashier still remembers the last customers, the receipts are still on the counter, and you can still look for the cause on the spot.</p>
<p>A cash-up is the habit of matching the money you actually took in against the payments on record, every day, before the cashier goes home. The steps: the starting float, counting the cash, finding any difference, matching QRIS and card payments, then depositing the cash. At the end there&#39;s a checklist you can print.</p>
<h2 id="who-counts-and-when">Who counts, and when</h2>
<p>The best time is after the last order is paid and before the cashier leaves. Don&#39;t count while you&#39;re still serving, because money coming in mid-count throws the numbers off.</p>
<p>Use two people if you can: the cashier on duty counts, then you or the shift lead counts again. This isn&#39;t about distrust. A second count catches the slips that happen when people are tired, and the cashier has a witness if questions come up later.</p>
<p>Two more rules make any difference traceable:</p>
<ul role="list">
<li>If you run two cashier shifts a day, cash up at every shift change. If you only count at the end of the day, you can&#39;t tell which shift a difference came from.</li>
<li>One cashier holds one drawer for one shift. If three people take change from the same drawer, nobody can explain a difference.</li>
</ul>
<h2 id="the-starting-float-the-same-amount-every-day">The starting float: the same amount every day</h2>
<p>The starting float is the change in the drawer when the outlet opens. Set the same amount every day, broken down by note, so the cashier doesn&#39;t run out of small change in the rush and the count at closing is easier.</p>
<div class="md-note" role="note" data-kind="example"><p><strong>Example:</strong> A starting float of Rp500,000, made up as in the table. Adjust it to your menu prices. If many items cost Rp18,000 or Rp23,000, keep more Rp2,000 and Rp5,000 notes for change.</p>
</div>
<div class="md-table" role="region" tabindex="0" aria-label="The starting float: the same amount every day (table, scrollable)"><table><thead><tr><th scope="col">Note</th><th scope="col" style="text-align:right">Count</th><th scope="col" style="text-align:right">Value</th></tr></thead><tbody><tr><td>Rp2,000</td><td style="text-align:right">10</td><td style="text-align:right">Rp20,000</td></tr><tr><td>Rp5,000</td><td style="text-align:right">10</td><td style="text-align:right">Rp50,000</td></tr><tr><td>Rp10,000</td><td style="text-align:right">13</td><td style="text-align:right">Rp130,000</td></tr><tr><td>Rp20,000</td><td style="text-align:right">10</td><td style="text-align:right">Rp200,000</td></tr><tr><td>Rp50,000</td><td style="text-align:right">2</td><td style="text-align:right">Rp100,000</td></tr><tr><td>Total</td><td style="text-align:right"></td><td style="text-align:right">Rp500,000</td></tr></tbody></table></div>
<p>Write the float in the cash book every morning, and have the person handing it over and the cashier taking it both sign. At closing, set the float aside again for tomorrow. The rest is money from cash sales.</p>
<h2 id="count-the-cash-then-match-it-to-the-records">Count the cash, then match it to the records</h2>
<p>Go through these steps in order:</p>
<ol>
<li>Check for orders still marked Unpaid. If a customer paid but the payment wasn&#39;t recorded, record it now on that order. If a customer left without paying, the cashier writes it in the cash book and tells you.</li>
<li>Take all the money out of the drawer, sort it by note, and write how many of each note on the cash-up sheet.</li>
<li>A second person counts again. If the totals differ, count again until they match.</li>
<li>Collect the receipts for any money taken out of the drawer that day, such as a last-minute bag of ice, and add them up. Money taken out without a receipt can&#39;t be counted, so make asking for one a habit.</li>
<li>Work out the cash that should be there, then compare it with your count.</li>
</ol>
<p>The formulas:</p>
<ul role="list">
<li>Expected cash = starting float + cash payments on record − money out with receipts</li>
<li>Difference = counted cash − expected cash</li>
</ul>
<p>In Kazeer, cash, QRIS, and card payments are recorded on the same order, and today&#39;s sales report updates itself. The cashier doesn&#39;t need to recap from a pile of paper. Kazeer also shows totals per payment method (cash, QRIS, card) and per cashier shift. What you compare against is the day&#39;s cash total, or the shift&#39;s cash total if you cash up at every shift change.</p>
<div class="md-note" role="note" data-kind="example"><p><strong>Example:</strong> Sales for the day are Rp4,250,000. Kazeer&#39;s totals per payment method are Rp1,850,000 in cash, Rp1,900,000 by QRIS, and Rp500,000 by card. The cashier bought ice for Rp40,000 from the drawer and kept the receipt.</p>
</div>
<div class="md-table" role="region" tabindex="0" aria-label="Count the cash, then match it to the records (table, scrollable)"><table><thead><tr><th scope="col">Cash count</th><th scope="col" style="text-align:right">Amount</th></tr></thead><tbody><tr><td>Starting float</td><td style="text-align:right">Rp500,000</td></tr><tr><td>Cash payments on record</td><td style="text-align:right">Rp1,850,000</td></tr><tr><td>Money out with receipts (ice)</td><td style="text-align:right">−Rp40,000</td></tr><tr><td>Expected cash</td><td style="text-align:right">Rp2,310,000</td></tr><tr><td>Counted in the drawer</td><td style="text-align:right">Rp2,290,000</td></tr><tr><td>Difference</td><td style="text-align:right">Rp20,000 short</td></tr></tbody></table></div>
<p>How to read it: Rp500,000 + Rp1,850,000 − Rp40,000 = Rp2,310,000. The drawer holds Rp2,290,000, so it&#39;s Rp20,000 short.</p>
<h2 id="when-the-numbers-dont-match">When the numbers don&#39;t match</h2>
<p>A small difference now and then is normal. What matters is that you look for the cause that same night and write every difference down, short or over.</p>
<p>Look in this order:</p>
<ol>
<li>Count again. Notes stuck together or tucked under the tray can be the cause.</li>
<li>Match QRIS and card first (see the next section). If a customer paid by QRIS but it was recorded as cash, the drawer comes up short and QRIS comes up over by the same amount. The money isn&#39;t gone; only the payment method was recorded wrong.</li>
<li>Check for orders still marked Unpaid, and for orders that may have been recorded twice. A duplicate order that hasn&#39;t been paid can be cancelled, and the cancellation stays visible in the records. A paid order can&#39;t be cancelled.</li>
<li>Ask the cashier while it&#39;s fresh: was any change given in a hurry, or was money taken out without a receipt?</li>
</ol>
<p>If you still can&#39;t find the cause, write it in the cash book: the date, the shift, the cashier&#39;s name, the amount, short or over, the likely cause, and both counters&#39; signatures.</p>
<p>Don&#39;t quietly cover a difference, either with your own money or by keeping the extra. An overage needs writing down too, because it can mean an order wasn&#39;t recorded or a customer got too little change.</p>
<p>Who covers a shortfall is your call. Whatever the rule, write it down from the start and tell every cashier before they begin work, not after a difference shows up.</p>
<p>Read the cash book once a week. Rp20,000 short once may just be a mistake with change. If differences keep showing up on the same shift or with the same cashier, look for the pattern. Maybe that cashier needs more practice giving change, or a step keeps getting skipped. There&#39;s a training plan in the <a href="https://kazeer.ai/en/blog/training-a-new-cashier/">guide to training a new cashier</a>.</p>
<h2 id="match-qris-and-card-payments">Match QRIS and card payments</h2>
<p>QRIS and card money never goes into the drawer, so it&#39;s easy to forget to check. A difference there can be just as big as one in cash.</p>
<ul role="list">
<li>QRIS: compare the total of QRIS payments recorded on that day&#39;s orders with the list of incoming transactions in the account or app that receives your QRIS payments. Match the number of transactions too, not just the total.</li>
<li>Card: card machines can usually print a summary of the day&#39;s transactions. Compare its total and transaction count with the card payments recorded on the orders.</li>
</ul>
<p>QRIS and card money may reach your bank account the next day, depending on the provider. For the cash-up, you match the day&#39;s list of transactions, not the account balance. If you&#39;re not sure where and when dynamic QRIS money arrives, ask the Kazeer team.</p>
<p>Besides payments recorded under the wrong method, watch for payments that failed and were tried again. Make sure each order has only one successful payment.</p>
<h2 id="deposit-the-cash-and-keep-the-records">Deposit the cash and keep the records</h2>
<p>Once everything matches, or the difference is written down:</p>
<ol>
<li>Set aside tomorrow&#39;s starting float, made up of the same notes.</li>
<li>Put the rest of the cash in an envelope. Write the date, the shift, the amount, and both counters&#39; signatures on it.</li>
<li>The envelope goes to you or to the bank, whichever your business does. Don&#39;t let sales money pile up at the outlet for days.</li>
<li>Keep the cash-up sheets and the receipts for money taken out in one folder per month.</li>
</ol>
<p>If you collect tax from customers, part of that money has to be paid over later. How to read the tax and sales figures each day is in the <a href="https://kazeer.ai/en/blog/daily-sales-report/">guide to the daily sales report</a>.</p>
<h2 id="cash-up-checklist">Cash-up checklist</h2>
<p>Print this and put it up near the counter. Go through it in the same order every night:</p>
<ol>
<li>The last order is paid, and no customers are waiting.</li>
<li>No Unpaid orders have been missed.</li>
<li>The money is sorted by note, and the count of each note is written down.</li>
<li>Two people have counted the money, and their totals match.</li>
<li>Receipts for money taken out are collected and added up.</li>
<li>Expected cash is worked out: starting float + cash on record − money out with receipts.</li>
<li>The QRIS total and transaction count match the list of incoming transactions.</li>
<li>The card total and transaction count match the card machine&#39;s summary.</li>
<li>Any difference, short or over, is written in the cash book with its likely cause.</li>
<li>Tomorrow&#39;s starting float is set aside.</li>
<li>The rest of the cash is in a dated, signed envelope.</li>
</ol>
<p>Starting tomorrow, use this list every night for two weeks. Then read the cash book: how often the cash was off, by how much, and on which shift. That tells you which step needs tightening.</p>
]]></content:encoded>
      <category>Operations</category>
      <dc:creator>The Kazeer team</dc:creator>
      <pubDate>Mon, 12 Oct 2026 00:00:00 GMT</pubDate>
      <enclosure url="https://kazeer.ai/img/blog/tutup-kasir-harian-og.jpg" length="107231" type="image/jpeg" />
    </item>
    <item>
      <title>How to set menu prices from your COGS</title>
      <link>https://kazeer.ai/en/blog/menu-pricing-from-cogs/</link>
      <guid isPermaLink="true">https://kazeer.ai/en/blog/menu-pricing-from-cogs/</guid>
      <description>Work out a selling price from COGS with a target COGS percentage, see why markup and margin differ, then round it and check it against similar places.</description>
      <content:encoded><![CDATA[<p>In the <a href="https://kazeer.ai/en/blog/cogs-per-menu-item/">guide to COGS per menu item</a>, one cup of Kopi Susu Aren has a COGS of Rp8,400 for dine-in and Rp9,200 for takeaway. That&#39;s only half the answer. The next question is what to charge for it.</p>
<p>Price it too low and each cup earns very little, however busy you are. Price it too high and customers may go somewhere else. This article uses the same Kopi Susu Aren numbers to work out a price from COGS, round it, and check it against prices near you.</p>
<div class="md-note" role="note" data-kind="example"><p><strong>Example:</strong> Every price, percentage, and target in this article is an example. The math uses prices before tax, as in the COGS guide. Swap in your own numbers.</p>
</div>
<h2 id="the-price-formula-from-a-target-cogs-percentage">The price formula from a target COGS percentage</h2>
<p>The most direct way is to decide first how much of the selling price can go to COGS. That number is your target COGS percentage. The formula:</p>
<ul role="list">
<li>Selling price = COGS ÷ target COGS percentage</li>
</ul>
<p>Say your target is 40%. For a dine-in Kopi Susu Aren, Rp8,400 ÷ 0.4 = Rp21,000. For takeaway, Rp9,200 ÷ 0.4 = Rp23,000.</p>
<p>This formula gives the lowest price that still meets your target. A higher price brings the COGS percentage down. A lower price pushes it over the target.</p>
<p>Where does 40% come from? Not from a general rule, because no percentage fits every business. Pick a target, then check the result against your average gross profit target per serving, which comes from your operating costs and the profit you want. The COGS guide shows how, and the operating costs to count are listed in the <a href="https://kazeer.ai/en/blog/gross-profit-vs-net-profit/">article on gross and net profit</a>. In that guide&#39;s example, each serving needs to earn an average gross profit of Rp10,000. A price of Rp21,000 gives a gross profit of Rp21,000 − Rp8,400 = Rp12,600, so it&#39;s above that target. If many of your items earn less gross profit than that target, lower your target COGS percentage.</p>
<h2 id="markup-and-margin-arent-the-same">Markup and margin aren&#39;t the same</h2>
<p>When someone says &quot;a 40% profit,&quot; ask first: 40% of what? There are two ways to work it out, and they give very different prices.</p>
<ul role="list">
<li>Markup is gross profit divided by COGS. Selling price = COGS × (1 + markup).</li>
<li>Gross margin is gross profit divided by the selling price. Selling price = COGS ÷ (1 − margin).</li>
</ul>
<p>A target COGS percentage of 40% is the same as a 60% gross margin, because the other 60% of the price is gross profit.</p>
<p>Here&#39;s what happens when you apply &quot;40%&quot; three ways to a COGS of Rp8,400:</p>
<div class="md-table" role="region" tabindex="0" aria-label="Markup and margin aren't the same (table, scrollable)"><table><thead><tr><th scope="col">Method</th><th scope="col">Formula</th><th scope="col" style="text-align:right">Selling price</th><th scope="col" style="text-align:right">Gross profit per cup</th></tr></thead><tbody><tr><td>40% markup</td><td>Rp8,400 × 1.4</td><td style="text-align:right">Rp11,760</td><td style="text-align:right">Rp3,360</td></tr><tr><td>40% gross margin</td><td>Rp8,400 ÷ 0.6</td><td style="text-align:right">Rp14,000</td><td style="text-align:right">Rp5,600</td></tr><tr><td>40% COGS percentage</td><td>Rp8,400 ÷ 0.4</td><td style="text-align:right">Rp21,000</td><td style="text-align:right">Rp12,600</td></tr></tbody></table></div>
<p>The gap between a 40% markup and a 40% margin alone is Rp2,240 a cup. With a 40% markup, COGS takes up 71.4% of the price (Rp8,400 ÷ Rp11,760). You only reach Rp21,000 with a 150% markup.</p>
<p>If you need to convert one into the other:</p>
<ul role="list">
<li>Margin = markup ÷ (1 + markup). A 150% markup is a margin of 1.5 ÷ 2.5 = 60%.</li>
<li>Markup = margin ÷ (1 − margin). A 60% margin is a markup of 0.6 ÷ 0.4 = 150%.</li>
</ul>
<p>When you talk prices with a business partner or your head barista, agree first on which percentage you mean. The rest of this article uses the COGS percentage.</p>
<h2 id="dine-in-and-takeaway-prices">Dine-in and takeaway prices</h2>
<p>Takeaway COGS is higher because of the plastic cup, lid, and straw. With a 40% target, the lowest price is Rp21,000 for dine-in and Rp23,000 for takeaway. You have three options:</p>
<ol>
<li>Two prices: Rp21,000 for dine-in, Rp23,000 for takeaway. This matches your costs best, but your cashier has to use the right price every time.</li>
<li>One price based on takeaway COGS: Rp23,000 for everyone. This is the safest for your target, but dine-in customers pay more.</li>
<li>One price based on average COGS, weighted by your mix of dine-in and takeaway orders.</li>
</ol>
<p>For the third option, look at your orders from the last few weeks. Say 30% of Kopi Susu Aren orders are takeaway:</p>
<ul role="list">
<li>Average COGS = (70% × Rp8,400) + (30% × Rp9,200) = Rp5,880 + Rp2,760 = Rp8,640</li>
<li>Lowest price = Rp8,640 ÷ 0.4 = Rp21,600</li>
</ul>
<p>If takeaway orders grow, the average COGS goes up with them. Check your mix again every month.</p>
<h2 id="round-the-price-then-check-again">Round the price, then check again</h2>
<p>Formula results rarely suit a menu board. Rp21,600 is hard to remember and awkward for cash change. Round up to the nearest Rp500 or Rp1,000, then work out the COGS percentage again.</p>
<div class="md-table" role="region" tabindex="0" aria-label="Round the price, then check again (table, scrollable)"><table><thead><tr><th scope="col">Price after rounding</th><th scope="col" style="text-align:right">Average COGS</th><th scope="col" style="text-align:right">COGS percentage</th><th scope="col">Meets the 40% target?</th></tr></thead><tbody><tr><td>Rp21,500 (rounded down)</td><td style="text-align:right">Rp8,640</td><td style="text-align:right">40.2%</td><td>No</td></tr><tr><td>Rp22,000 (rounded up)</td><td style="text-align:right">Rp8,640</td><td style="text-align:right">39.3%</td><td>Yes</td></tr></tbody></table></div>
<p>Rp22,000 is the price used in the COGS guide. At that price, a dine-in cup has a COGS percentage of 38.2%, a takeaway cup 41.8%, and the average is 39.3%.</p>
<p>A few more things to keep in mind when you round:</p>
<ul role="list">
<li>Keep your menu prices in a sensible order. A large size uses more ingredients, so it should cost more than a regular one.</li>
<li>Items with similar COGS should have prices that aren&#39;t far apart, so customers aren&#39;t confused.</li>
<li>Rounding down is fine, as long as you know what the COGS percentage becomes and the rest of the menu makes up the difference.</li>
<li>If you charge tax, decide whether the prices on your menu include it. You can set up both VAT (PPN) and regional tax (pajak daerah) in Kazeer. Check with your tax office or a tax consultant which taxes apply to your business.</li>
</ul>
<h2 id="compare-with-similar-places-nearby">Compare with similar places nearby</h2>
<p>The formula price is your floor on the cost side. Customers still compare you with other places. Before you set a price, do a simple check:</p>
<ol>
<li>Pick three to five similar places near you, with a similar concept and similar customers.</li>
<li>Write down their prices for comparable items. Note the cup or portion size.</li>
<li>Put your price in the same table.</li>
</ol>
<p>Then read the result:</p>
<ul role="list">
<li>If your price is much higher, check your COGS first: amounts that are too generous, ingredients bought at too high a price, or high waste. If your COGS is reasonable, make sure customers can see why, such as a bigger size or different ingredients.</li>
<li>If your price is much lower, you may have room to raise it, or some costs may be missing from your COGS.</li>
<li>If the prices are similar, make sure your COGS percentage still meets your target.</li>
</ul>
<p>Don&#39;t just copy another place&#39;s prices. Their rent, wages, recipes, and customers are different from yours.</p>
<h2 id="review-prices-when-ingredient-costs-go-up">Review prices when ingredient costs go up</h2>
<p>A price that works today may not work a few months from now. The COGS guide uses the example of UHT milk going from Rp18,000 to Rp20,000 a liter. The milk in each cup costs Rp300 more. With 5% waste, the COGS per cup goes up by Rp315:</p>
<div class="md-table" role="region" tabindex="0" aria-label="Review prices when ingredient costs go up (table, scrollable)"><table><thead><tr><th scope="col">Per cup</th><th scope="col" style="text-align:right">Before</th><th scope="col" style="text-align:right">After</th></tr></thead><tbody><tr><td>Dine-in COGS</td><td style="text-align:right">Rp8,400</td><td style="text-align:right">Rp8,715</td></tr><tr><td>Takeaway COGS</td><td style="text-align:right">Rp9,200</td><td style="text-align:right">Rp9,515</td></tr><tr><td>Average COGS (30% takeaway)</td><td style="text-align:right">Rp8,640</td><td style="text-align:right">Rp8,955</td></tr><tr><td>Average COGS percentage at Rp22,000</td><td style="text-align:right">39.3%</td><td style="text-align:right">40.7%</td></tr></tbody></table></div>
<p>The COGS percentage is now over the 40% target. Your options:</p>
<ul role="list">
<li>Raise the price. Rp8,955 ÷ 0.4 = Rp22,387.50. Rounded up to the nearest Rp500, the price becomes Rp22,500, with a COGS percentage of 39.8%.</li>
<li>Keep the price and bring COGS down, for example by comparing other suppliers&#39; prices or buying a more economical pack size. If you change the recipe amounts, taste-test first, because regular customers will notice.</li>
<li>Keep the price for now if the gap is small and the rest of the menu makes up for it. Collect a few increases, then change prices once, so your menu doesn&#39;t keep changing.</li>
</ul>
<p>In Kazeer, COGS per item can be calculated from the item&#39;s recipe, and COGS is recorded from every sale, for each outlet. Your reports show sales, COGS, and gross profit. After you change a price or a COGS figure, work out the COGS percentage from your reports every week, COGS divided by sales, to see whether it&#39;s back near your target. See an example in the <a href="https://kazeer.ai/en/#reports">reports section</a>.</p>
<h2 id="steps-for-your-menu">Steps for your menu</h2>
<p>Start with your five best sellers:</p>
<ol>
<li>Take each item&#39;s dine-in and takeaway COGS from your costing.</li>
<li>Set a target COGS percentage, then check it against your average gross profit target per serving.</li>
<li>Work out the lowest price: COGS ÷ target. If you use one price, use the average COGS for your takeaway mix.</li>
<li>Round up, then check the COGS percentage again.</li>
<li>Compare with three to five similar places near you.</li>
<li>Whenever a receipt shows a new ingredient price, recalculate, then decide: raise the price, bring COGS down, or hold for now.</li>
</ol>
]]></content:encoded>
      <category>Money</category>
      <dc:creator>The Kazeer team</dc:creator>
      <pubDate>Mon, 12 Oct 2026 00:00:00 GMT</pubDate>
      <enclosure url="https://kazeer.ai/img/blog/harga-jual-menu-og.jpg" length="73386" type="image/jpeg" />
    </item>
    <item>
      <title>How to use FIFO and FEFO so ingredients don&#39;t expire on the shelf</title>
      <link>https://kazeer.ai/en/blog/fifo-ingredient-stock/</link>
      <guid isPermaLink="true">https://kazeer.ai/en/blog/fifo-ingredient-stock/</guid>
      <description>Use the oldest stock first: how to receive deliveries, date them with masking tape, set up shelves and the chiller, and check weekly for items near their date.</description>
      <content:encoded><![CDATA[<p>Picture this: you&#39;re tidying the storeroom and find two cartons of UHT milk past their expiry date at the very back of the shelf. In front of them sits a carton that arrived yesterday. Your staff always grab whatever is closest, so the old cartons never got touched. You paid for that milk, and it never turned into a sale.</p>
<p>The habit that prevents this has a name: FIFO, and its close cousin FEFO. Neither needs expensive equipment. All it takes is a way of stacking your shelves, a roll of masking tape, and a marker.</p>
<h2 id="what-fifo-and-fefo-mean">What FIFO and FEFO mean</h2>
<p>FIFO stands for first in, first out: whatever arrived first gets used first. FEFO stands for first expired, first out: whatever expires soonest gets used first.</p>
<p>Most of the time the order is the same, because stock that arrives first also expires first. But not always. A supplier can deliver a carton with an earlier expiry date than the stock already on your shelf. So the rule is:</p>
<ul role="list">
<li>Items with an expiry date printed on the pack: use FEFO. The earliest date goes first.</li>
<li>Items with no date, such as vegetables and fruit from the market, or anything you prepare yourself: use FIFO, going by the date received or the date made.</li>
</ul>
<p>Why it matters:</p>
<ul role="list">
<li>Your menu tastes the same from day to day, because ingredients get used while they&#39;re fresh.</li>
<li>Less gets thrown away. Every expired carton is money that went out and never came back as a sale.</li>
<li>Nothing past its date reaches a customer.</li>
</ul>
<h2 id="when-a-delivery-arrives-check-date-put-it-at-the-back">When a delivery arrives: check, date, put it at the back</h2>
<p>The FIFO order is set in the first few minutes after a delivery arrives. If new stock gets stacked in front, the order is wrong from the start.</p>
<ol>
<li>Check the quantities against the delivery note. How to record deliveries is covered in the <a href="https://kazeer.ai/en/blog/daily-ingredient-stock-check/">guide to daily ingredient stock checks</a>.</li>
<li>Check the condition: leaking, dented, or bulging packs, or broken seals. Chilled goods should arrive cold. Refuse or note any problem before the driver leaves.</li>
<li>Read the expiry dates. If a date is too close for you to use it all in time, raise it with the supplier then and there.</li>
<li>Put chilled and frozen goods away first, then dry goods.</li>
<li>Stick a strip of masking tape on the pack or jar and write the date received with a marker. If the printed expiry date is small or hard to read, copy it in large letters too.</li>
<li>Move the old stock to the front, then put the new stock behind it or underneath it.</li>
</ol>
<div class="md-note" role="note" data-kind="example"><p><strong>Example:</strong> Two lines on the masking tape are enough: &quot;Rec&#39;d 12 Oct&quot; and &quot;Exp 30 Nov&quot;. Write the month as a word, not a number, so no one misreads it.</p>
</div>
<h2 id="set-up-shelves-and-the-chiller-to-keep-the-order">Set up shelves and the chiller to keep the order</h2>
<p>Stacking habits only last if the shelves make them easy.</p>
<ul role="list">
<li>One item, one place. Label the shelf edge with the item&#39;s name, so new deliveries always go to the same spot.</li>
<li>Take from the front, fill from the back. Tell every staff member, including whoever usually receives deliveries.</li>
<li>Don&#39;t stack too high. Whatever sits at the very bottom or the very back is easy to forget.</li>
<li>For jars, don&#39;t pour new coffee beans or sugar on top of what&#39;s left. Use up the old first, or keep two jars: one in use and a spare behind it.</li>
<li>In the chiller, keep raw ingredients like meat and chicken on the bottom shelf, below anything ready to use, in covered containers. That way nothing drips onto other food.</li>
<li>Don&#39;t pack the chiller too full. Cold air needs room to move, and crowded packs are hard to read.</li>
<li>Follow the storage instructions on the label, such as keep dry, keep out of direct sunlight, or refrigerate after opening.</li>
</ul>
<h2 id="label-anything-opened-or-prepared">Label anything opened or prepared</h2>
<p>The expiry date on a pack applies while it&#39;s sealed and stored as instructed. Once opened, many products have rules of their own, such as refrigerate and use within a few days. The pack usually says so.</p>
<p>The same goes for anything you make yourself, like palm sugar syrup, cold brew, or sauces. There&#39;s no factory date, so you write one.</p>
<div class="md-table" role="region" tabindex="0" aria-label="Label anything opened or prepared (table, scrollable)"><table><thead><tr><th scope="col">Item</th><th scope="col">What goes on the label</th></tr></thead><tbody><tr><td>Sealed pack from a supplier</td><td>Date received, plus the expiry date if it&#39;s hard to read</td></tr><tr><td>Opened pack</td><td>Date opened and the use-by limit from the pack&#39;s instructions</td></tr><tr><td>Something you prepared</td><td>Name, date made, use-by limit, and the initials of whoever made it</td></tr><tr><td>Contents moved to a jar or another container</td><td>Name, date moved, and the expiry date from the original pack</td></tr></tbody></table></div>
<p>You set the use-by limit for anything you prepare yourself, based on your recipe and the instructions on its ingredients&#39; packs. When in doubt, pick the shorter limit. Write it down as a kitchen rule so every staff member uses the same limit.</p>
<p>Two rules for all staff:</p>
<ul role="list">
<li>An item without a label has an unknown age. Ask before using it.</li>
<li>If you&#39;re not sure an ingredient is still good, don&#39;t serve it.</li>
</ul>
<h2 id="a-weekly-check-of-whats-close-to-its-date">A weekly check of what&#39;s close to its date</h2>
<p>Labels only help if someone reads them. Pick one day a week, ideally the day before you usually order from suppliers, and go through the shelves, the chiller, and the freezer.</p>
<ol>
<li>Look for items whose expiry date or use-by limit falls within the next two weeks.</li>
<li>Move them to the very front, and tell your barista or cook to use them first.</li>
<li>Work out whether you&#39;ll use them up before the date. If not, find a way to use them: a daily special, part of a set menu, or moved to an outlet that goes through them faster.</li>
<li>Set aside anything past its date. Don&#39;t use it, and write down how much before you throw it out.</li>
<li>For items that keep showing up on this list, order less next time or buy a smaller pack.</li>
</ol>
<div class="md-note" role="note" data-kind="example"><p><strong>Example:</strong> At Wednesday&#39;s check, there are 4 cartons of UHT milk that expire in 5 days, and you use about 1 carton a day. Used first, all four are gone in 4 days, so putting them in front is enough. There&#39;s also 1 kg of cocoa powder that expires in 10 days, but you only use about 50 g a day. In 10 days you&#39;ll use just 500 g, so half of it is at risk. Put a chocolate drink on the daily specials this week, and order a smaller pack next time.</p>
</div>
<p>Stock thrown out because it expired is one source of ingredient waste. How to track and reduce it is in the <a href="https://kazeer.ai/en/blog/reduce-ingredient-waste/">article on ingredient waste</a>.</p>
<h2 id="where-kazeer-helps">Where Kazeer helps</h2>
<p>You still read the dates from the labels on the shelf. Kazeer helps with the quantities:</p>
<ul role="list">
<li>Kazeer&#39;s Inventory holds your list of items and ingredients. That&#39;s where you check stock and see what&#39;s left, so at the weekly check you know how much you still have before you reorder.</li>
<li>Ingredient stock goes down automatically with each sale. If your count on the shelf is lower than the stock Kazeer shows, the gap points to ingredients thrown out or used without being recorded, such as expired stock that went in the trash.</li>
<li>Your sales records show the items sold. From them you can see how many servings you sell of the items that use a given ingredient, and estimate whether the stock that&#39;s piling up will run out before its date.</li>
<li>If you run more than one outlet, stock is managed per outlet, and you can move items to the outlet that needs them. Ingredients close to their date at one outlet can go to an outlet that uses them faster. Record the transfer at both outlets. See an example in the <a href="https://kazeer.ai/en/#outlets">multi-outlet section</a>.</li>
</ul>
<h2 id="fifo-and-fefo-checklist">FIFO and FEFO checklist</h2>
<p>Keep this list near the shelves, or send it to your staff WhatsApp group.</p>
<h3 id="every-delivery">Every delivery</h3>
<ol>
<li>Check quantities against the delivery note, then check condition and expiry dates.</li>
<li>Put chilled and frozen goods away first.</li>
<li>Add masking tape and write the date received.</li>
<li>Move old stock to the front and put the new stock behind it.</li>
</ol>
<h3 id="every-day">Every day</h3>
<ul role="list">
<li>Take from the front.</li>
<li>Label every pack you open and everything you prepare.</li>
<li>Don&#39;t use anything without a label until you&#39;ve asked.</li>
</ul>
<h3 id="every-week">Every week</h3>
<ol>
<li>Find items whose date falls within the next two weeks, and move them to the front.</li>
<li>Plan how to use anything that won&#39;t run out in time.</li>
<li>Set aside and record anything past its date.</li>
<li>Adjust your next order for items that often get close to their date.</li>
</ol>
]]></content:encoded>
      <category>Stock</category>
      <dc:creator>The Kazeer team</dc:creator>
      <pubDate>Mon, 12 Oct 2026 00:00:00 GMT</pubDate>
      <enclosure url="https://kazeer.ai/img/blog/fifo-bahan-baku-og.jpg" length="118851" type="image/jpeg" />
    </item>
    <item>
      <title>Staff attendance with a selfie: rules and how to start</title>
      <link>https://kazeer.ai/en/blog/staff-attendance-selfie/</link>
      <guid isPermaLink="true">https://kazeer.ai/en/blog/staff-attendance-selfie/</guid>
      <description>Write attendance rules, explain to staff why the selfie and location are used, get through the first week, then match attendance against the shift schedule.</description>
      <content:encoded><![CDATA[<p>Picture the attendance book on the cashier&#39;s counter. Arrival times are written by hand, sometimes by a coworker signing in for a friend who hasn&#39;t shown up yet. At the end of the month, you match that handwriting against your own memory. If you run more than one outlet, you can&#39;t even tell who has arrived at the other outlet this morning.</p>
<p>Attendance with a selfie solves part of this. The rest depends on the rules you write and how you introduce them to your staff. This article covers both, through the first week.</p>
<h2 id="how-attendance-works-in-kazeer">How attendance works in Kazeer</h2>
<p>In Kazeer, staff clock in and clock out from their phone with a selfie, and the selfie is matched to the face they registered. You can turn this face matching off per role. If their role requires a location check, their location is also matched to the outlet where they work, and if it doesn&#39;t match, the clock-in fails. In the app, only the owner sees the attendance records, including the selfies and locations.</p>
<p>Those two things answer questions an attendance book can&#39;t:</p>
<ul role="list">
<li>Who clocked in. The selfie shows the person&#39;s face, so signing in for a friend is no longer as easy as writing their name.</li>
<li>Where they clocked in. For roles that require a location check, the location at clock-in is matched to the outlet where they work. An attendance book can never check that.</li>
</ul>
<p>Staff access in Kazeer is also set per task and per outlet. For roles that require a location check, the clock-in location is matched to the outlet where each person works, so make sure every staff member&#39;s outlet is set correctly before they start clocking in, so their clock-ins don&#39;t fail. How to set roles and outlets is in the <a href="https://kazeer.ai/en/blog/staff-access-multi-outlet/">article on staff access</a>.</p>
<h2 id="write-your-attendance-rules-before-you-start">Write your attendance rules before you start</h2>
<p>The app records clock-ins, but you still set the rules. Keep them short, on one page, and apply them the same way to every staff member at every outlet.</p>
<p>Five things to cover, with examples you can adapt:</p>
<div class="md-table" role="region" tabindex="0" aria-label="Write your attendance rules before you start (table, scrollable)"><table><thead><tr><th scope="col">Topic</th><th scope="col">Sample rule</th></tr></thead><tbody><tr><td>When to clock in and out</td><td>Clock in after you arrive at the outlet, before you put on your apron. Clock out after tables and equipment are cleaned, before you leave the outlet.</td></tr><tr><td>Late</td><td>Clocking in after the shift&#39;s start time counts as late.</td></tr><tr><td>Shift swaps</td><td>Ask the owner on WhatsApp at least one day ahead. The swap stands once it&#39;s approved. Whoever actually works the shift clocks in.</td></tr><tr><td>Forgot to clock in, a failed clock-in, or phone trouble</td><td>Tell the shift lead right away. The shift lead writes down the arrival time in a backup book.</td></tr><tr><td>If it keeps happening</td><td>Late or missed clock-ins three times in a month mean a direct talk with the owner.</td></tr></tbody></table></div>
<p>A few things to keep in mind as you write them:</p>
<ul role="list">
<li>Every shift needs a clear start time first. Without a schedule, you can&#39;t say who is late.</li>
<li>Consequences for being late or missing a clock-in, such as a warning or a deduction, have to fit the employment agreement and the labor rules that apply to you.</li>
<li>Use the same wording at every outlet. Rules that differ between outlets quickly feel unfair.</li>
</ul>
<h2 id="explain-it-to-your-staff-before-day-one">Explain it to your staff before day one</h2>
<p>Staff accept a selfie and location more easily when they know why. Explain it in person, ideally with everyone together, then send the written version.</p>
<p>What to tell them:</p>
<ul role="list">
<li>Why the selfie: to make sure the person clocking in is really that person. It&#39;s also fair to the staff who always arrive on time.</li>
<li>Face registration: before their first clock-in, each staff member registers their face with a few photos, with their consent. At clock-in, the selfie is matched to that face.</li>
<li>Why the location: if their role requires a location check, it matches each clock-in to the outlet where they work. A clock-in from anywhere else will fail. The location is only taken when they clock in and out.</li>
<li>Who can see the attendance records: in the app, only you, as the owner.</li>
<li>What the records are used for: matching attendance against the work schedule. Also say what you won&#39;t do, such as share selfies in a group chat or with anyone else.</li>
<li>What to do if something goes wrong when they clock in.</li>
</ul>
<p>Selfies and locations are your staff&#39;s personal data. Handle them with care: don&#39;t share them, and don&#39;t use them for anything other than attendance.</p>
<p>Before day one, also ask whether every staff member has a phone and enough mobile data to clock in. Sort out a solution for anyone who doesn&#39;t before the first day starts. The selfie and location also need camera and location permission on the phone, so help your staff allow them on their first try.</p>
<div class="md-note" role="note" data-kind="example"><p><strong>Example:</strong> A message for your staff WhatsApp group: &quot;Starting Monday, clock in and out with Kazeer on your own phone, with a selfie. Before your first clock-in, register your face with a few photos. Your location is used to match your clock-in to the outlet where you work, so clocking in from anywhere else will fail. In the app, I&#39;m the only one who can see the selfies and locations. Clock in when you get to the outlet, and clock out after cleanup. If your phone gives you trouble or your clock-in fails, tell the shift lead right away. The full rules are posted by the back door.&quot;</p>
</div>
<h2 id="the-first-week">The first week</h2>
<p>The first few days decide whether the new way sticks or gets dropped.</p>
<div class="md-table" role="region" tabindex="0" aria-label="The first week (table, scrollable)"><table><thead><tr><th scope="col">When</th><th scope="col">What to do</th></tr></thead><tbody><tr><td>Before day one</td><td>Make sure every staff member has access at the right outlet. Have each person register their face, then try clocking in once while you&#39;re at the outlet.</td></tr><tr><td>Days 1 to 3</td><td>Keep the old attendance book running alongside. Each day, check that everyone who worked clocked in and out.</td></tr><tr><td>Days 4 to 7</td><td>Use only selfie attendance. Ask anyone who missed a clock-in the same day, rather than waiting for the end of the month.</td></tr><tr><td>End of the week</td><td>Collect the problems that came up, fix any rule that confused people, then put the old book away.</td></tr></tbody></table></div>
<p>Problems you may see in the first week: forgetting to clock out in a hurry, a phone with a dead battery, camera or location permission not yet allowed, or a clock-in that fails because it was done before reaching the outlet. Your rule for missed clock-ins, failed clock-ins, and phone trouble covers each one. What matters is responding the same way every time.</p>
<p>If the problem is in the app rather than the staff member&#39;s phone, contact Kazeer&#39;s customer support, which comes with every plan: WhatsApp 24/7, answered by the team daily from 09:00 to 21:00 WIB. If you&#39;re on the Standard Monthly or Standard Annual plan, staff training is included in your plan too.</p>
<h2 id="connect-attendance-to-your-shift-schedule">Connect attendance to your shift schedule</h2>
<p>A clock-in at 07:05 only means something if you know when that shift starts. The schedule shows who should be working where and when. Attendance shows who actually came.</p>
<p>Once a week, compare the two:</p>
<ul role="list">
<li>Who was scheduled but didn&#39;t clock in? Was there leave or a shift swap?</li>
<li>Who clocked in but wasn&#39;t scheduled? Usually it&#39;s a swap that never made it onto the schedule.</li>
<li>Is one shift often late? If it&#39;s different people each time, the start time may need to change, for example because it doesn&#39;t fit public transport times.</li>
</ul>
<p>If you move a staff member to another outlet, update the outlet where they work in Kazeer before their first shift there. If their role requires a location check, their clock-in location is matched to that outlet, so without this update, their clock-in at the new outlet will fail.</p>
<p>How to build a schedule around your busy hours, including rules for shift swaps, is in the <a href="https://kazeer.ai/en/blog/shift-schedule-busy-hours/">article on shift schedules</a>.</p>
<h2 id="checklist-to-get-started">Checklist to get started</h2>
<ol>
<li>Write your attendance rules on one page: when to clock in and out, what counts as late, shift swaps, missed clock-ins, and consequences.</li>
<li>Explain to your staff why the selfie and location are used, that in the app only the owner can see the records, and what to do if something goes wrong.</li>
<li>Make sure every staff member has a phone they can use, and that their outlet is set correctly in Kazeer.</li>
<li>Have each person register their face and try clocking in once, then keep the old attendance book running alongside for the first three days.</li>
<li>At the end of the first week, fix the rules. After that, compare attendance with the shift schedule every week.</li>
</ol>
]]></content:encoded>
      <category>Staff</category>
      <dc:creator>The Kazeer team</dc:creator>
      <pubDate>Mon, 12 Oct 2026 00:00:00 GMT</pubDate>
      <enclosure url="https://kazeer.ai/img/blog/absensi-swafoto-og.jpg" length="69270" type="image/jpeg" />
    </item>
    <item>
      <title>Slow-hour promotions: how to choose, cost, and judge them</title>
      <link>https://kazeer.ai/en/blog/slow-hour-promotions/</link>
      <guid isPermaLink="true">https://kazeer.ai/en/blog/slow-hour-promotions/</guid>
      <description>Find your slowest hours from your sales records, pick a promotion that still leaves gross profit, then compare the results with the weeks before.</description>
      <content:encoded><![CDATA[<p>Picture this: it&#39;s 15:00 at your outlet. The lunch crowd has gone, most tables are empty, and your barista is waiting for the next order. Rent and wages keep running through hours like these.</p>
<p>A promotion can help fill slow hours, as long as its price still leaves gross profit and you measure the result. This article covers the order to do it in: find your slow hours, pick a type of promotion, cost it, run it with your staff, and compare the results.</p>
<div class="md-note" role="note" data-kind="example"><p><strong>Example:</strong> Every time, price, COGS figure, and sales number in this article is an example, not data from a real business.</p>
</div>
<h2 id="find-your-slow-hours">Find your slow hours</h2>
<p>Start with your busy hours. The business advice you can ask Kazeer AI for can name your outlet&#39;s busy hours, as in this example: &quot;Your busy hours are 11:00 to 13:00. Get your stock ready and promote your signature items.&quot; (Kazeer AI gives its advice in Indonesian; this example is translated.) During busy hours, follow that advice: get your stock ready and offer your signature items. A promotion with a lower price suits slow hours better.</p>
<p>To find your slowest hours, record your sales by block of hours for two weeks:</p>
<ol>
<li>Pick a few fixed times, such as 11:00, 14:00, 17:00, and closing.</li>
<li>At each of those times, write down today&#39;s total sales. In Kazeer, today&#39;s sales report updates itself, or you can ask Kazeer AI &quot;How much have I sold today?&quot; (in Indonesian, &quot;Berapa penjualan hari ini?&quot;).</li>
<li>Subtract each reading from the one after it. The result is your sales for that block of hours.</li>
<li>Keep weekdays and weekends apart, because their patterns can differ.</li>
</ol>
<p>The result looks something like this, for an average weekday:</p>
<div class="md-table" role="region" tabindex="0" aria-label="Find your slow hours (table, scrollable)"><table><thead><tr><th scope="col">Block of hours</th><th scope="col" style="text-align:right">Average sales</th><th scope="col" style="text-align:right">Per hour</th></tr></thead><tbody><tr><td>07:00 to 11:00</td><td style="text-align:right">Rp850,000</td><td style="text-align:right">Rp212,500</td></tr><tr><td>11:00 to 14:00</td><td style="text-align:right">Rp1,650,000</td><td style="text-align:right">Rp550,000</td></tr><tr><td>14:00 to 17:00</td><td style="text-align:right">Rp450,000</td><td style="text-align:right">Rp150,000</td></tr><tr><td>17:00 to 21:00</td><td style="text-align:right">Rp1,300,000</td><td style="text-align:right">Rp325,000</td></tr><tr><td><strong>Whole day</strong></td><td style="text-align:right"><strong>Rp4,250,000</strong></td><td style="text-align:right"></td></tr></tbody></table></div>
<p>Compare sales per hour, not per block, because the blocks are different lengths. In this example, 14:00 to 17:00 is the slowest. The same notes, taken every hour, also help you build your staff schedule. The <a href="https://kazeer.ai/en/blog/shift-schedule-busy-hours/">guide to shift schedules</a> shows how.</p>
<h2 id="pick-a-type-of-promotion">Pick a type of promotion</h2>
<p>Three types of promotion are easy to run and easy to cost:</p>
<ul role="list">
<li>A bundle: one drink and one food item for one price. Good for raising what each customer spends, and for items that earn well but rarely get ordered.</li>
<li>A pair price: two of the same item for one price, such as two Kopi Susu Aren. Good for getting customers to come with a friend.</li>
<li>A special price on one item at certain hours. The easiest to explain to customers and to your cashier.</li>
</ul>
<p>For how to choose the items, read the <a href="https://kazeer.ai/en/blog/best-sellers-vs-most-profitable/">article on best sellers and the most profitable items</a>. An item that earns well but sells little, like the Americano in that article&#39;s example, is a good one to try.</p>
<p>Three rules before you choose:</p>
<ul role="list">
<li>Run one promotion at a time. With three running at once, you won&#39;t know which one worked.</li>
<li>Pick items you have enough ingredients for. Ask Kazeer AI &quot;Which items should I check?&quot; (&quot;Barang apa yang perlu dicek?&quot;), then check the shelves and the fridge yourself.</li>
<li>Keep promo prices to slow hours. In busy hours, customers already come in and pay full price.</li>
</ul>
<h2 id="work-out-gross-profit-after-the-promotion">Work out gross profit after the promotion</h2>
<p>Before you set a promo price, work out its gross profit using your COGS per item. For how to calculate COGS, see the <a href="https://kazeer.ai/en/blog/cogs-per-menu-item/">guide to COGS per menu item</a>. In Kazeer, COGS per item can also be calculated from the item&#39;s recipe. The examples below use dine-in COGS.</p>
<div class="md-table" role="region" tabindex="0" aria-label="Work out gross profit after the promotion (table, scrollable)"><table><thead><tr><th scope="col">Promotion (example)</th><th scope="col" style="text-align:right">Regular price</th><th scope="col" style="text-align:right">Promo price</th><th scope="col" style="text-align:right">COGS</th><th scope="col" style="text-align:right">Gross profit on promo</th><th scope="col" style="text-align:right">COGS percentage</th></tr></thead><tbody><tr><td>Kopi Susu Aren + Croissant Butter</td><td style="text-align:right">Rp42,000</td><td style="text-align:right">Rp35,000</td><td style="text-align:right">Rp17,000</td><td style="text-align:right">Rp18,000</td><td style="text-align:right">48.6%</td></tr><tr><td>2 Kopi Susu Aren</td><td style="text-align:right">Rp44,000</td><td style="text-align:right">Rp38,000</td><td style="text-align:right">Rp16,800</td><td style="text-align:right">Rp21,200</td><td style="text-align:right">44.2%</td></tr><tr><td>Americano</td><td style="text-align:right">Rp20,000</td><td style="text-align:right">Rp15,000</td><td style="text-align:right">Rp4,400</td><td style="text-align:right">Rp10,600</td><td style="text-align:right">29.3%</td></tr></tbody></table></div>
<p>How to read the first row: the regular price is Rp22,000 + Rp20,000 = Rp42,000. The COGS is Rp8,400 + Rp8,600 = Rp17,000. At the promo price of Rp35,000, gross profit is Rp35,000 − Rp17,000 = Rp18,000 per bundle. At the regular price, it&#39;s Rp25,000. So you give up Rp7,000 on each bundle.</p>
<p>On customers who would have bought anyway, that Rp7,000 is gross profit you lose. Extra gross profit only comes from people who buy because of the promotion.</p>
<div class="md-note" role="note" data-kind="example"><p><strong>Example:</strong> Between 14:00 and 17:00, 5 customers a day usually buy a coffee and a croissant together. With the promotion, the gross profit from them drops by 5 × Rp7,000 = Rp35,000 a day. To cover that, you need 2 bundles from extra customers: 2 × Rp18,000 = Rp36,000. The third bundle onward is extra gross profit.</p>
</div>
<p>Two more things:</p>
<ul role="list">
<li>A promo price must never be below COGS. If it is, every serving you sell adds to your loss.</li>
<li>For takeaway, add the cost of the cup, lid, straw, or box to COGS, then work it out again.</li>
</ul>
<h2 id="set-the-dates-then-tell-your-staff">Set the dates, then tell your staff</h2>
<p>Without an end date, a promotion can easily run on without ever being judged, and customers may start to treat the promo price as the normal price. Set:</p>
<ul role="list">
<li>A start date and an end date, such as two weeks.</li>
<li>The days and hours, such as Monday to Friday, 14:00 to 17:00.</li>
<li>What the promotion covers: which items, whether it&#39;s for dine-in or takeaway, and whether it can be combined with other offers.</li>
</ul>
<p>Write all of that on one card and keep it by the POS. Before the first day, explain it to your staff:</p>
<ul role="list">
<li>Cashiers: when the promotion applies, how to offer it to customers, and how to record it.</li>
<li>Bar and kitchen: which ingredients to have ready before 14:00.</li>
<li>Who decides questions outside the rules, such as a customer who arrives at 17:05.</li>
</ul>
<p>Also set the bundle or promo price in Kazeer&#39;s promo feature before the promotion&#39;s first day, so promotional sales are recorded and you can count them.</p>
<h2 id="compare-before-and-after">Compare before and after</h2>
<p>Use the same recording method you used to find your slow hours. Compare the two weeks before the promotion with the two weeks it runs, on the same days.</p>
<p>The example below uses the Kopi Susu Aren + Croissant Butter bundle from earlier. During the promotion, the 5 customers who usually buy a coffee and a croissant pay the bundle price, and other customers buy an average of 6 extra bundles a day.</p>
<div class="md-table" role="region" tabindex="0" aria-label="Compare before and after (table, scrollable)"><table><thead><tr><th scope="col">Average per weekday</th><th scope="col" style="text-align:right">Before</th><th scope="col" style="text-align:right">During</th><th scope="col">Change</th></tr></thead><tbody><tr><td>Sales, 14:00 to 17:00</td><td style="text-align:right">Rp450,000</td><td style="text-align:right">Rp625,000</td><td>up Rp175,000</td></tr><tr><td>Sales for the day</td><td style="text-align:right">Rp4,250,000</td><td style="text-align:right">Rp4,425,000</td><td>up Rp175,000</td></tr><tr><td>COGS for the day</td><td style="text-align:right">Rp1,700,000</td><td style="text-align:right">Rp1,802,000</td><td>up Rp102,000</td></tr><tr><td>Gross profit for the day</td><td style="text-align:right">Rp2,550,000</td><td style="text-align:right">Rp2,623,000</td><td>up Rp73,000</td></tr><tr><td>COGS percentage</td><td style="text-align:right">40.0%</td><td style="text-align:right">40.7%</td><td>up 0.7 points</td></tr></tbody></table></div>
<p>How to read it:</p>
<ul role="list">
<li>Sales in the promotion hours went up by 6 × Rp35,000 − 5 × Rp7,000 = Rp175,000. Daily sales went up by the same amount, so customers didn&#39;t just move over from other hours.</li>
<li>COGS went up by 6 × Rp17,000 = Rp102,000 for the 6 extra bundles. The COGS percentage went up a little because of the lower promo price. That&#39;s expected, as long as gross profit in rupiah grows.</li>
<li>Gross profit went up by Rp175,000 − Rp102,000 = Rp73,000 a day, the same as 6 × Rp18,000 − Rp35,000 from the example earlier. Compare that with any extra cost of the promotion, such as printing a poster.</li>
</ul>
<p>In Kazeer, reports show sales, COGS, and gross profit, so you can take the daily rows above from your reports. Sales in the promotion hours come from your block-of-hours records. You can also ask Kazeer AI for yesterday&#39;s sales and number of transactions. See a sample conversation in the <a href="https://kazeer.ai/en/#kazeer-ai">Kazeer AI section</a>.</p>
<p>Watch out for unusual days. If there was a public holiday, a day of heavy rain, or an event near your outlet, leave that day out of the comparison.</p>
<h2 id="start-with-one-promotion">Start with one promotion</h2>
<ol>
<li>Record sales by block of hours for two weeks, then find your slowest hours.</li>
<li>Pick one type of promotion and one or two items you have enough ingredients for.</li>
<li>Work out the gross profit on the promotion using COGS, and make sure the price is above COGS.</li>
<li>Set the start date, end date, days, and hours.</li>
<li>Set the promo price in Kazeer&#39;s promo feature, write the rules on a card by the POS, then explain them to your cashiers, bar, and kitchen.</li>
<li>When the promotion ends, compare sales and gross profit with the two weeks before, then decide: keep it, change it, or stop it.</li>
</ol>
]]></content:encoded>
      <category>Marketing</category>
      <dc:creator>The Kazeer team</dc:creator>
      <pubDate>Mon, 12 Oct 2026 00:00:00 GMT</pubDate>
      <enclosure url="https://kazeer.ai/img/blog/promo-jam-sepi-og.jpg" length="124190" type="image/jpeg" />
    </item>
    <item>
      <title>How to choose a POS device: phone, tablet, or computer</title>
      <link>https://kazeer.ai/en/blog/pos-device-phone-tablet-computer/</link>
      <guid isPermaLink="true">https://kazeer.ai/en/blog/pos-device-phone-tablet-computer/</guid>
      <description>Choose a POS device from your counter and order flow: when a phone, tablet, or computer fits best, plus the receipt printer, power, and internet.</description>
      <content:encoded><![CDATA[<p>Before you buy a new device for the counter, look at your counter and at how orders move through your outlet. The right device is the one that fits the space, the order flow, and the people using it.</p>
<p>Kazeer runs on phones, tablets, and computers. So you can start with the devices you already have and add only what&#39;s missing.</p>
<h2 id="start-with-your-counter-and-order-flow">Start with your counter and order flow</h2>
<p>Answer these five questions before you choose:</p>
<ol>
<li>How much room is on your counter? Besides the POS device, it also holds the cash drawer, the receipt printer, and orders waiting to be picked up.</li>
<li>Where do customers order? At the counter, or does a waiter go to their table?</li>
<li>Who needs to read orders? The cashier, the kitchen or bar, the waiter taking table orders, and you.</li>
<li>Where is the nearest power outlet to the counter?</li>
<li>How long is the line at your busiest time? The longer the line, the more a wide enough screen matters, so the cashier doesn&#39;t tap the wrong item.</li>
</ol>
<p>The third question decides how many devices you need. In Kazeer, each staff member has their own login and role, such as Cashier, Kitchen staff, or Waiter. Orders go to the kitchen from the same record, so if your kitchen reads orders in Kazeer, the kitchen needs a device too. So does your waiter, if they take orders at the table. With table order, guests scan the QR code on their table and order by themselves. The full flow is in the <a href="https://kazeer.ai/en/blog/kitchen-order-flow/">guide to the cashier to kitchen order flow</a>.</p>
<h2 id="phone-tablet-or-computer">Phone, tablet, or computer</h2>
<div class="md-table" role="region" tabindex="0" aria-label="Phone, tablet, or computer (table, scrollable)"><table><thead><tr><td></td><th scope="col">Phone</th><th scope="col">Tablet</th><th scope="col">Computer</th></tr></thead><tbody><tr><th scope="row">Counter space</th><td>Least</td><td>Some, neater on a stand</td><td>Most</td></tr><tr><th scope="row">Screen size</th><td>Small</td><td>Medium</td><td>Widest</td></tr><tr><th scope="row">Carrying to tables</th><td>Easiest</td><td>Possible, but heavier</td><td>Not practical</td></tr><tr><th scope="row">Best for</th><td>Booths, small stalls, table orders</td><td>The main POS at cafes and restaurants</td><td>Large counters, and back-office work</td></tr></tbody></table></div>
<h3 id="phone">Phone</h3>
<p>A phone suits a booth or stall with a short menu and a narrow counter. It&#39;s also the easiest for a waiter to carry to tables to take orders. The weak spot is the screen: with a long menu, the cashier has to scroll a lot, and that slows the line.</p>
<p>For the cashier, use a phone that belongs to the outlet, not a staff member&#39;s own phone. That way the device stays at the outlet when someone goes home, moves to another outlet, or leaves.</p>
<h3 id="tablet">Tablet</h3>
<p>A tablet is the middle ground. The screen is wide enough for the menu and the order, but it doesn&#39;t take up much space. Put it on a stand so it stays in place, the screen is easy to read for a cashier standing at the counter, and it doesn&#39;t get knocked around when the counter is busy. Standard Annual includes a free tablet stand, one for each outlet.</p>
<h3 id="computer">Computer</h3>
<p>A laptop or desktop suits a large, fixed counter, such as in a restaurant. A computer is also comfortable for back-office work: reading sales reports, managing the menu catalog, and checking stock. A wide screen makes it easier to compare numbers, especially if you run more than one outlet.</p>
<div class="md-note" role="note" data-kind="note"><p><strong>Note:</strong> You can open Kazeer as a web app at app.kazeer.ai. For Android devices running Android 7.0 or newer, there&#39;s the Kazeer POS app on Google Play.</p>
</div>
<h2 id="example-setups-by-business-type">Example setups by business type</h2>
<p>This table is a starting point, not a rule. Adjust it to your answers to the five questions.</p>
<div class="md-table" role="region" tabindex="0" aria-label="Example setups by business type (table, scrollable)"><table><thead><tr><th scope="col">Business type</th><th scope="col">POS</th><th scope="col">Kitchen or bar</th><th scope="col">Table orders</th><th scope="col">For you</th></tr></thead><tbody><tr><td>Booth or drink stall</td><td>Phone or tablet</td><td>Not needed if the cashier also makes the drinks</td><td>Not needed</td><td>Your phone</td></tr><tr><td>Cafe with tables</td><td>Tablet on a stand</td><td>One device at the bar or in the kitchen</td><td>A phone, if orders are taken at tables</td><td>Phone or computer</td></tr><tr><td>Restaurant with a separate kitchen</td><td>Tablet or computer</td><td>One device in the kitchen</td><td>A phone for each waiter who takes orders</td><td>Computer</td></tr><tr><td>Several outlets</td><td>The setup above, at each outlet</td><td>As above</td><td>As above</td><td>Computer</td></tr></tbody></table></div>
<p>If you run several outlets, all of them are in one Kazeer account, with one report for every outlet. A computer at the office or at home lets you read it without visiting each outlet.</p>
<p>When you count devices, remember that staff access in Kazeer is set per task and per outlet. Whoever uses the kitchen device only needs Kitchen staff access, and the cashier only needs Cashier access. How to set it up is in the <a href="https://kazeer.ai/en/blog/staff-access-multi-outlet/">guide to staff access</a>.</p>
<h2 id="receipt-printer">Receipt printer</h2>
<p>In Kazeer, you can connect a receipt printer and print receipts from the POS app.</p>
<p>Printing from an iPhone or iPad isn&#39;t confirmed yet. A Bluetooth thermal printer may not connect from a browser on an iPhone or iPad, so if the counter needs to print receipts, an Android phone or tablet is the safe choice.</p>
<p>Before you buy a printer:</p>
<ul role="list">
<li>If you already have a receipt printer, mention it in the demo. The Kazeer team can help match the devices and printer you already have.</li>
<li>If you don&#39;t have one yet, ask the Kazeer team what kind of printer can be connected. Ask first, then buy.</li>
</ul>
<p>Where to put it:</p>
<ul role="list">
<li>Within the cashier&#39;s reach, away from splashes and steam from the bar or kitchen.</li>
<li>Keep spare paper rolls near the counter. Running out of paper in the rush builds a line right away.</li>
<li>Every morning before you open, switch the printer on and check the paper and the connection, so any problem shows up before the first customer does.</li>
</ul>
<p>Receipts also help when you match the money at the end of the day. The steps are in the <a href="https://kazeer.ai/en/blog/end-of-day-cash-up/">guide to the end-of-day cash-up</a>.</p>
<h2 id="power-and-internet">Power and internet</h2>
<p>A device that dies in the middle of the rush is as much trouble as a cashier who doesn&#39;t show up. A few basics to set up:</p>
<ul role="list">
<li>Give every device a place to charge near where it&#39;s used. Keep cables out of the paths staff walk.</li>
<li>Charge phones and tablets fully before opening, and keep a spare charger.</li>
<li>Set up a stable internet connection at the outlet, plus a backup, such as mobile data on another phone you can share.</li>
<li>If the internet drops, the POS keeps working. Data is saved on the device, then saved to the cloud once the connection is back.</li>
<li>Use the POS device for work only. Set a screen lock, and turn off notifications from other apps so they don&#39;t cover the order screen.</li>
</ul>
<h2 id="check-before-you-buy">Check before you buy</h2>
<p>This order keeps you from buying devices you end up not using:</p>
<ol>
<li>List the devices you already have: phones, tablets, laptops, and printers.</li>
<li>List everyone who needs a device: the cashier, the kitchen or bar, waiters taking table orders, and you.</li>
<li>Measure the counter, then mark where the device, the printer, and the cash drawer will go.</li>
<li>Bring the lists to a <a href="https://kazeer.ai/en/#get-started">demo with the Kazeer team</a>, so they can help match your devices and printer.</li>
<li>Run one full order with the devices you have: take the order, send it to the kitchen, take the payment, and print the receipt. A paid order can&#39;t be cancelled, so that practice order stays in your records as a sale.</li>
<li>Buy only what&#39;s really missing. If you&#39;re choosing a tablet, compare the plans first, since Standard Annual includes a free tablet stand. The comparison is in the <a href="https://kazeer.ai/en/blog/kazeer-plans-free-or-standard/">guide to choosing a plan</a>.</li>
</ol>
<p>If you&#39;re getting a first outlet ready, the rest of the cashier setup is in the <a href="https://kazeer.ai/en/blog/pos-setup-new-cafe/">guide to setting up the POS for a new cafe</a>.</p>
]]></content:encoded>
      <category>Operations</category>
      <dc:creator>The Kazeer team</dc:creator>
      <pubDate>Mon, 12 Oct 2026 00:00:00 GMT</pubDate>
      <enclosure url="https://kazeer.ai/img/blog/perangkat-kasir-og.jpg" length="62912" type="image/jpeg" />
    </item>
    <item>
      <title>Gross profit vs net profit: the difference and how to work them out</title>
      <link>https://kazeer.ai/en/blog/gross-profit-vs-net-profit/</link>
      <guid isPermaLink="true">https://kazeer.ai/en/blog/gross-profit-vs-net-profit/</guid>
      <description>A big gross profit doesn&#39;t always mean a profitable business. Work out net profit after rent, wages, and other costs, then find your break-even sales.</description>
      <content:encoded><![CDATA[<p>Picture this: your report for the month shows a gross profit of Rp21,600,000. It sounds like a lot. But once rent, wages, and the electricity bill are paid, far less is left. In a slow month, you might even end up below zero.</p>
<p>That gap is the difference between gross profit and net profit. Gross profit tells you whether your menu prices cover your ingredients. Net profit tells you whether your business actually makes money. You need both.</p>
<div class="md-note" role="note" data-kind="example"><p><strong>Example:</strong> Every number in this article is an example for one small cafe, not data from a real business. Swap in your own numbers.</p>
</div>
<h2 id="gross-profit-sales-minus-cogs">Gross profit: sales minus COGS</h2>
<p>The formulas:</p>
<ul role="list">
<li>Gross profit = sales − COGS</li>
<li>Gross margin = gross profit ÷ sales × 100%</li>
</ul>
<p>Sales here means sales before tax. The tax your customers pay goes to the government later, so it isn&#39;t income for your business.</p>
<p>COGS (cost of goods sold) is what you spent on ingredients and packaging for the items you sold. If you&#39;ve never worked out COGS per menu item, start with the <a href="https://kazeer.ai/en/blog/cogs-per-menu-item/">guide to calculating COGS per menu item</a>.</p>
<p>Gross profit answers one question: once the ingredients are paid for, how much is left for other costs and for you? It doesn&#39;t tell you whether your business is profitable, because rent, wages, and bills aren&#39;t counted yet.</p>
<h2 id="net-profit-after-operating-costs">Net profit: after operating costs</h2>
<p>The formula:</p>
<ul role="list">
<li>Net profit = gross profit − operating costs</li>
</ul>
<p>Operating costs are the costs of running the business that don&#39;t belong to any one serving:</p>
<ul role="list">
<li>Rent</li>
<li>Staff wages and meal allowances</li>
<li>Electricity and water</li>
<li>Gas</li>
<li>Internet</li>
<li>Packaging and supplies that aren&#39;t in your COGS, such as bags, tissues, and dish soap</li>
<li>Equipment maintenance and servicing</li>
<li>App subscriptions, including your POS app</li>
</ul>
<p>Two costs that are easy to miss:</p>
<ul role="list">
<li>Your own pay, if you work at the outlet. Leave it out and your net profit looks bigger than it really is.</li>
<li>Costs you pay once a year, such as annual rent or a major service on your espresso machine. Divide by 12 and add that to each month&#39;s costs.</li>
</ul>
<div class="md-note" role="note" data-kind="note"><p><strong>Note:</strong> Net profit in this article is before any tax on your business income. Check the tax rules that apply to your business with a tax consultant or your local tax office.</p>
</div>
<h2 id="a-worked-example-for-one-month">A worked example for one month</h2>
<p>First, the monthly operating costs:</p>
<div class="md-table" role="region" tabindex="0" aria-label="A worked example for one month (table, scrollable)"><table><thead><tr><th scope="col">Monthly operating costs</th><th scope="col" style="text-align:right">Amount</th></tr></thead><tbody><tr><td>Rent</td><td style="text-align:right">Rp5,000,000</td></tr><tr><td>Wages, including your own pay</td><td style="text-align:right">Rp7,000,000</td></tr><tr><td>Electricity and water</td><td style="text-align:right">Rp1,200,000</td></tr><tr><td>Gas</td><td style="text-align:right">Rp400,000</td></tr><tr><td>Internet</td><td style="text-align:right">Rp350,000</td></tr><tr><td>Packaging and supplies outside COGS</td><td style="text-align:right">Rp300,000</td></tr><tr><td>Equipment maintenance</td><td style="text-align:right">Rp500,000</td></tr><tr><td>POS app (Kazeer Standard Monthly)</td><td style="text-align:right">Rp250,000</td></tr><tr><td><strong>Total</strong></td><td style="text-align:right"><strong>Rp15,000,000</strong></td></tr></tbody></table></div>
<p>The POS app row is the cost for one outlet, since Kazeer plan prices are per outlet. If you use the Kazeer Free plan, that row is Rp0, and a Rp500 platform fee per transaction is paid by the customer. For a comparison of the two, read the <a href="https://kazeer.ai/en/blog/kazeer-plans-free-or-standard/">article on choosing a plan</a>.</p>
<p>Now compare two months: a busy one and a slow one. The gross margin is the same in both, 60%, and so are the operating costs.</p>
<div class="md-table" role="region" tabindex="0" aria-label="A worked example for one month (table, scrollable) (2)"><table><thead><tr><td></td><th scope="col" style="text-align:right">Busy month</th><th scope="col" style="text-align:right">Slow month</th></tr></thead><tbody><tr><th scope="row">Sales (before tax)</th><td style="text-align:right">Rp36,000,000</td><td style="text-align:right">Rp22,000,000</td></tr><tr><th scope="row">COGS (40% of sales)</th><td style="text-align:right">Rp14,400,000</td><td style="text-align:right">Rp8,800,000</td></tr><tr><th scope="row">Gross profit</th><td style="text-align:right">Rp21,600,000</td><td style="text-align:right">Rp13,200,000</td></tr><tr><th scope="row">Operating costs</th><td style="text-align:right">Rp15,000,000</td><td style="text-align:right">Rp15,000,000</td></tr><tr><th scope="row"><strong>Net profit</strong></th><td style="text-align:right"><strong>Rp6,600,000</strong></td><td style="text-align:right"><strong>loss of Rp1,800,000</strong></td></tr></tbody></table></div>
<p>How to read the busy month: Rp36,000,000 − Rp14,400,000 = Rp21,600,000 in gross profit. After operating costs, Rp21,600,000 − Rp15,000,000 = Rp6,600,000 in net profit. That&#39;s about 18.3% of sales.</p>
<p>In the slow month, gross profit is Rp13,200,000, while operating costs stay at Rp15,000,000. The result is a loss of Rp1,800,000, even though the menu prices and recipes haven&#39;t changed.</p>
<h2 id="why-a-healthy-gross-margin-can-still-mean-a-loss">Why a healthy gross margin can still mean a loss</h2>
<p>Ingredient costs go up and down with your sales. Most operating costs don&#39;t. You pay rent and wages whether you&#39;re busy or quiet. So there&#39;s a level of sales you have to pass before you make a profit. That level is your break-even point:</p>
<ul role="list">
<li>Minimum monthly sales = operating costs ÷ gross margin</li>
</ul>
<p>From the example: Rp15,000,000 ÷ 0.6 = Rp25,000,000 a month. If the outlet is open 25 days a month, that&#39;s Rp1,000,000 a day. The slow month&#39;s sales of Rp22,000,000 fall below that line, so the month ends in a loss.</p>
<p>Three other things can make net profit smaller than you expect:</p>
<ul role="list">
<li>Operating costs go up without sales following. Rent rises, you add staff, or the electricity bill grows because of new equipment.</li>
<li>Wasted ingredients. COGS worked out from sales only covers the items you sold. Ingredients that expire, spill, or get thrown away are still paid for when you buy them, unless you&#39;ve already built waste into your COGS per item.</li>
<li>Promotions and discounts. Customers pay less while the ingredients cost the same. For how to cost a promotion that still pays, read the <a href="https://kazeer.ai/en/blog/slow-hour-promotions/">article on slow-hour promotions</a>.</li>
</ul>
<p>To check for wasted ingredients, compare what you used in rupiah with the COGS in your reports:</p>
<div class="md-note" role="note" data-kind="example"><p><strong>Example:</strong> Your ingredient stock is worth Rp3,000,000 at the start of the month, you buy Rp15,200,000 of ingredients during the month, and your stock is worth Rp3,200,000 at the end. What you really used is Rp3,000,000 + Rp15,200,000 − Rp3,200,000 = Rp15,000,000. The COGS in your report is Rp14,400,000. The Rp600,000 difference is ingredients you used that never made it into COGS, such as waste or spoilage, so the busy month&#39;s real net profit was Rp6,000,000.</p>
</div>
<p>Stock value is the quantity in stock times its purchase price. For ways to cut wasted ingredients, read the <a href="https://kazeer.ai/en/blog/reduce-ingredient-waste/">article on ingredient waste</a>.</p>
<h2 id="what-to-check-every-week-and-every-month">What to check every week and every month</h2>
<p>Sales, COGS, and gross profit move every day, so check them every week. Most operating costs come once a month, so check net profit every month, once all of that month&#39;s costs are recorded.</p>
<p>In Kazeer, you can set up both VAT (PPN) and regional tax (pajak daerah), and COGS and tax are recorded from every sale. Reports show sales, COGS, gross profit, and tax, for each outlet and in one report for all outlets. See an example in the <a href="https://kazeer.ai/en/#reports">reports section</a>. Operating costs like rent, wages, and electricity don&#39;t come from sales, but you can record them in Kazeer, and the report shows your net profit: gross profit minus those operating costs.</p>
<p>Every week:</p>
<ul role="list">
<li>Average sales per day. Compare it with your daily break-even point, Rp1,000,000 in the example.</li>
<li>COGS percentage, which is COGS divided by sales. If it goes up while your menu prices stay the same, check your latest ingredient prices and the amounts used at the bar or in the kitchen.</li>
<li>Gross profit, compared with the weeks before.</li>
</ul>
<p>Every month:</p>
<ul role="list">
<li>Make sure all of the month&#39;s operating costs are recorded in Kazeer, from receipts, bills, and transfer records.</li>
<li>Check net profit in your reports: gross profit minus the operating costs you recorded.</li>
<li>Compare ingredient use with the COGS in your reports to see what was wasted.</li>
<li>Recalculate your break-even point if any cost has changed.</li>
</ul>
<p>If you run more than one outlet, work out net profit for each. Take each outlet&#39;s gross profit from your reports, then subtract that outlet&#39;s own costs, such as its rent, its staff wages, and its Kazeer subscription. Split shared costs, such as your own pay, across all outlets. That shows you which outlets cover their own costs.</p>
<h2 id="steps-for-this-month">Steps for this month</h2>
<ol>
<li>Gather last month&#39;s operating costs. Include your own pay and the monthly share of annual costs.</li>
<li>Take last month&#39;s sales, COGS, and gross profit from your reports.</li>
<li>Work out net profit: gross profit minus operating costs.</li>
<li>Work out your break-even point: operating costs divided by gross margin, then divided by the number of days you&#39;re open.</li>
<li>Put your daily break-even number somewhere you see every day, and compare it with your sales every week.</li>
<li>At the end of the month, value your stock and compare ingredient use with the COGS in your reports.</li>
</ol>
]]></content:encoded>
      <category>Money</category>
      <dc:creator>The Kazeer team</dc:creator>
      <pubDate>Mon, 12 Oct 2026 00:00:00 GMT</pubDate>
      <enclosure url="https://kazeer.ai/img/blog/laba-kotor-bersih-og.jpg" length="89493" type="image/jpeg" />
    </item>
    <item>
      <title>How to reduce ingredient waste in a cafe kitchen</title>
      <link>https://kazeer.ai/en/blog/reduce-ingredient-waste/</link>
      <guid isPermaLink="true">https://kazeer.ai/en/blog/reduce-ingredient-waste/</guid>
      <description>Log what gets thrown out for two weeks, work out a month&#39;s cost, then cut it with written portions, prep to expected sales, and weekly stock checks.</description>
      <content:encoded><![CDATA[<p>Picture closing time at your cafe. The barista pours out the extra pot of tea brewed this morning, the cook throws away a plate of Nasi Goreng from a wrong order, and the lettuce in the chiller has gone limp. Nobody writes any of it down. The day&#39;s sales report looks normal, but you&#39;ve already paid for everything that went in the bin.</p>
<p>One incident hardly registers. Ingredient waste only looks big once you add it up over a month. Below are where it comes from, how to track it, a worked example of what it costs, and how to cut it back one cause at a time.</p>
<h2 id="where-ingredient-waste-comes-from">Where ingredient waste comes from</h2>
<div class="md-table" role="region" tabindex="0" aria-label="Where ingredient waste comes from (table, scrollable)"><table><thead><tr><th scope="col">Source</th><th scope="col">Example</th><th scope="col">How to cut it</th></tr></thead><tbody><tr><td>Over-prep</td><td>Tea brewed, vegetables cut, or sauce made beyond what sells</td><td>Prep to the day&#39;s expected sales</td></tr><tr><td>Spoiled or expired stock</td><td>Milk past its date at the back of the shelf, limp vegetables</td><td>Use the oldest stock first</td></tr><tr><td>Portion drift</td><td>A little extra milk in each cup, rice scooped a bit fuller</td><td>Written portions and measuring tools</td></tr><tr><td>Wrong orders</td><td>Drinks remade because of the wrong size or the wrong item</td><td>One order record from cashier to kitchen</td></tr><tr><td>Trimmings</td><td>Peels, stems, and vegetable ends</td><td>Trim more carefully, use good trimmings in other dishes</td></tr><tr><td>Spills and drops</td><td>A dropped glass, milk spilled while pouring</td><td>Rearrange the work station</td></tr></tbody></table></div>
<p>For stock that spoils on the shelf, read <a href="https://kazeer.ai/en/blog/fifo-ingredient-stock/">how to use FIFO and FEFO</a>. For wrong orders, the one-record flow from cashier to kitchen is in the <a href="https://kazeer.ai/en/blog/kitchen-order-flow/">article on the order flow</a>.</p>
<h2 id="log-what-gets-thrown-out-for-two-weeks">Log what gets thrown out for two weeks</h2>
<p>You can&#39;t reduce what you can&#39;t see. Tape a sheet of paper near the kitchen bin or the prep table, and for two weeks write down every ingredient that gets thrown out:</p>
<div class="md-table" role="region" tabindex="0" aria-label="Log what gets thrown out for two weeks (table, scrollable)"><table><thead><tr><th scope="col">Day</th><th scope="col">Ingredient</th><th scope="col">Amount</th><th scope="col">Reason</th><th scope="col" style="text-align:right">Cost</th></tr></thead><tbody><tr><td>Monday</td><td>UHT milk</td><td>300 ml</td><td>Wrong order</td><td style="text-align:right">Rp5,400</td></tr><tr><td>Monday</td><td>Coffee beans</td><td>36 g</td><td>Wrong order</td><td style="text-align:right">Rp7,200</td></tr><tr><td>Tuesday</td><td>Palm sugar syrup</td><td>250 ml</td><td>Over-prep</td><td style="text-align:right">Rp10,000</td></tr><tr><td>Tuesday</td><td>UHT milk</td><td>1 liter</td><td>Expired</td><td style="text-align:right">Rp18,000</td></tr></tbody></table></div>
<p>Cost = amount × unit price. You get the unit price from your receipts: purchase price divided by pack size, as in the <a href="https://kazeer.ai/en/blog/cogs-per-menu-item/">guide to COGS per menu item</a>. This table uses that guide&#39;s sample prices: UHT milk at Rp18 per ml, coffee beans at Rp200 per gram, and palm sugar syrup at Rp40 per ml. First row: 300 ml × Rp18 = Rp5,400.</p>
<p>To make the log something you can trust:</p>
<ul role="list">
<li>Whoever throws something out writes it down right away, not from memory at the end of the day.</li>
<li>Use the fixed list of reasons from the table above, so the totals are easy to add up.</li>
<li>You or the shift lead can fill in the cost later.</li>
<li>Use the log to find causes, not to blame people. If staff are afraid of being told off, they stop writing things down.</li>
</ul>
<p>At the end of each week, add up the cost per reason. The reason with the biggest total is where you start.</p>
<h2 id="a-worked-example-a-month-of-waste">A worked example: a month of waste</h2>
<p>Every number in this section is an example, not real business data. Say your two-week log adds up like this:</p>
<div class="md-table" role="region" tabindex="0" aria-label="A worked example: a month of waste (table, scrollable)"><table><thead><tr><th scope="col">Reason</th><th scope="col" style="text-align:right">Total for 14 days</th></tr></thead><tbody><tr><td>Over-prep</td><td style="text-align:right">Rp84,000</td></tr><tr><td>Spoiled or expired stock</td><td style="text-align:right">Rp56,000</td></tr><tr><td>Wrong orders</td><td style="text-align:right">Rp42,000</td></tr><tr><td>Spills and other causes</td><td style="text-align:right">Rp28,000</td></tr><tr><td><strong>Total</strong></td><td style="text-align:right"><strong>Rp210,000</strong></td></tr></tbody></table></div>
<p>The daily average is Rp210,000 ÷ 14 = Rp15,000. Over a 30-day month, that&#39;s Rp15,000 × 30 = Rp450,000.</p>
<p>Portion drift doesn&#39;t show up in the log, because nothing is thrown out: the extra goes into the cup. Work it out separately. Say the recipe for Kopi Susu Aren calls for 150 ml of milk, but your baristas pour 170 ml on average. The 20 ml difference × Rp18 = Rp360 a cup. At 400 cups a month, that&#39;s Rp360 × 400 = Rp144,000.</p>
<p>The total is Rp450,000 + Rp144,000 = Rp594,000 a month. With a gross profit of Rp13,600 per dine-in Kopi Susu Aren, as in the COGS example, that equals the gross profit from about 44 cups (Rp594,000 ÷ Rp13,600 = 43.7).</p>
<p>Now say you cut over-prep and wrong orders in half, and the milk goes back to 150 ml a cup:</p>
<ul role="list">
<li>Half of over-prep and wrong orders: (Rp84,000 + Rp42,000) ÷ 2 = Rp63,000 per 14 days, or Rp63,000 ÷ 14 × 30 = Rp135,000 a month.</li>
<li>Milk back to the right amount: Rp144,000 a month.</li>
</ul>
<p>You save Rp135,000 + Rp144,000 = Rp279,000 a month.</p>
<h2 id="write-down-a-standard-portion-for-every-item">Write down a standard portion for every item</h2>
<p>Portions that live only in people&#39;s heads drift, a little at a time, from one staff member to the next.</p>
<ul role="list">
<li>Write down the portion for every menu item in grams, ml, or number of pieces, and post it at the bar and in the kitchen.</li>
<li>Keep measuring tools at each station: a digital scale, a measuring jug, measuring spoons, or fixed-size scoops. A little or a splash is not a portion.</li>
<li>Once a week, ask one staff member to make an item the usual way, then weigh the ingredients and compare them with the written portion.</li>
<li>When a portion changes, such as a new cup size, update the sheet and the item&#39;s COGS at the same time.</li>
</ul>
<p>Portions are also the basis of your COGS. If the portion at the bar differs from the one in your costing, the COGS on paper comes out lower than what you really spend.</p>
<h2 id="prep-to-the-days-expected-sales">Prep to the day&#39;s expected sales</h2>
<p>Over-prep can come from fear of running out during the rush. To get the amount right:</p>
<ol>
<li>Look at how many of each item sold on the same day last week. Compare the same day, because Monday and Saturday can be very different. How to do that is in the <a href="https://kazeer.ai/en/blog/daily-sales-report/">guide to reading the daily sales report</a>.</li>
<li>Make a daily prep list: which ingredients, how much, and who preps them.</li>
<li>Prep in two rounds: some in the morning, the rest before the rush, once you&#39;ve seen how the morning is selling.</li>
<li>Prep anything that spoils quickly once cut or brewed in smaller amounts, more often.</li>
<li>At the end of the day, write down the leftover prep. If the same item is always left over, prep less of it on the same day next week.</li>
</ol>
<div class="md-note" role="note" data-kind="example"><p><strong>Example:</strong> Last Saturday you sold 40 iced teas, and one pot makes 10 glasses. Instead of brewing 4 pots in the morning, brew 2 first, then brew the next pot each time the last one starts running low.</p>
</div>
<h2 id="use-stock-checks-to-find-items-that-keep-running-over">Use stock checks to find items that keep running over</h2>
<p>The waste log only catches what gets written down. To find what doesn&#39;t, compare two numbers for your main ingredients once a week:</p>
<ol>
<li>Usage by stock count: opening stock + deliveries − closing stock.</li>
<li>Usage by recipe: servings sold × amount per serving.</li>
<li>The difference between them, minus what&#39;s already in the waste log, is the gap you can&#39;t yet explain.</li>
</ol>
<div class="md-note" role="note" data-kind="example"><p><strong>Example:</strong> This week, opening stock of UHT milk was 10 liters, 24 liters came in, and closing stock was 6 liters, so you used 28 liters. You sold 160 milk drinks at 150 ml each, so by the recipe you used 24 liters. The difference is 4 liters. The waste log shows 1.3 liters of milk (the 300 ml and the 1 liter in the table above). That leaves 2.7 liters unexplained, or about 17 ml a cup (2,700 ml ÷ 160). Portion drift is the easiest cause to check, so start with the milk portion at the bar.</p>
</div>
<p>An ingredient whose gap shows up week after week is where to look: the portion, waste nobody wrote down, or deliveries recorded wrong. How to count stock daily is in the <a href="https://kazeer.ai/en/blog/daily-ingredient-stock-check/">guide to daily ingredient stock checks</a>.</p>
<p>If you use Kazeer, what you need for both calculations is in the same app as your POS. Kazeer&#39;s Inventory holds your list of items and ingredients, where you check stock and see what&#39;s left. Ingredient stock there goes down automatically with each sale, so the gap between the stock Kazeer shows and your physical count is the same as the gap between the two numbers above: ingredients used outside of sales, both the ones in your waste log and the ones not yet explained. COGS is recorded from every sale, but waste never becomes a sale, so you still keep the waste log separately.</p>
<p>You can ask <a href="https://kazeer.ai/en/#kazeer-ai">Kazeer AI</a> which stock is running low, for example &quot;Which items should I check?&quot; (&quot;Barang apa yang perlu dicek?&quot;). If an ingredient runs low sooner than usual while sales of the items that use it haven&#39;t gone up, check that ingredient first.</p>
<h2 id="start-this-week">Start this week</h2>
<ol>
<li>Put up the waste log sheet and explain the rules to your staff.</li>
<li>Write down the portions for your best sellers and post them at the bar and in the kitchen.</li>
<li>Make a daily prep list from sales on the same day last week.</li>
<li>After two weeks, add up the cost per reason and pick one reason to cut first.</li>
<li>Every week, compare usage by stock count with usage by recipe for the two or three ingredients you use most.</li>
</ol>
]]></content:encoded>
      <category>Stock</category>
      <dc:creator>The Kazeer team</dc:creator>
      <pubDate>Mon, 12 Oct 2026 00:00:00 GMT</pubDate>
      <enclosure url="https://kazeer.ai/img/blog/bahan-terbuang-og.jpg" length="76725" type="image/jpeg" />
    </item>
    <item>
      <title>How to train a new cashier in one week</title>
      <link>https://kazeer.ai/en/blog/training-a-new-cashier/</link>
      <guid isPermaLink="true">https://kazeer.ai/en/blog/training-a-new-cashier/</guid>
      <description>A day-by-day plan for a new cashier&#39;s first week: menu, orders, kitchen statuses, payments, mistakes, and the cash-up, plus an end-of-week check.</description>
      <content:encoded><![CDATA[<p>A new cashier left alone in the rush usually learns from mistakes made in front of customers: the wrong item, the wrong table, or too little change. The one-week plan below gives them time to watch first, then try with someone beside them, before they run the counter alone.</p>
<p>Each day follows the same pattern. One new thing a day, watched first, then tried with a coach standing next to them. The coach can be you or an experienced cashier who knows the job well.</p>
<h2 id="before-day-one">Before day one</h2>
<p>Get these ready before the new cashier arrives:</p>
<ol>
<li>Set up their role in Kazeer. Staff access is set per task and per outlet, so a new cashier only needs the Cashier role at the outlet where they work. How to do it is in the <a href="https://kazeer.ai/en/blog/staff-access-multi-outlet/">guide to staff access</a>.</li>
<li>Plan their first week so a coach is always on the same shift. If you can, start them on a day that&#39;s usually not too busy. How to build the schedule is in the <a href="https://kazeer.ai/en/blog/shift-schedule-busy-hours/">guide to shift schedules</a>.</li>
<li>Print the menu and prices for them to study at home.</li>
<li>Write one rule on a sheet of paper and put it up near the counter: if you&#39;re unsure or make a mistake, stop and call your coach. Don&#39;t guess.</li>
</ol>
<p>Staff training from the Kazeer team comes with Standard Monthly and Standard Annual, not with the Free plan. If you&#39;re on a Standard plan, ask the Kazeer team when training can be scheduled during the first week. If you&#39;re on the Free plan, you or an experienced cashier do the training with this plan.</p>
<h2 id="the-seven-day-plan">The seven-day plan</h2>
<div class="md-table" role="region" tabindex="0" aria-label="The seven-day plan (table, scrollable)"><table><thead><tr><th scope="col">Day</th><th scope="col">Focus</th><th scope="col">Ready to move on when</th></tr></thead><tbody><tr><td>1</td><td>Menu, prices, and where things are</td><td>They can name the price of your best sellers without the list</td></tr><tr><td>2</td><td>Taking Dine-in and Takeaway orders</td><td>They always confirm the table number with the customer</td></tr><tr><td>3</td><td>The kitchen and order statuses</td><td>They can answer a customer asking about their order from its status in the app</td></tr><tr><td>4</td><td>Payments and receipts</td><td>Every payment is recorded under the right method</td></tr><tr><td>5</td><td>The rush and mistakes</td><td>They call the coach when unsure, instead of guessing</td></tr><tr><td>6</td><td>The cash-up</td><td>Their count matches the coach&#39;s count</td></tr><tr><td>7</td><td>One full shift</td><td>They pass the end-of-week check</td></tr></tbody></table></div>
<p>If a day doesn&#39;t go smoothly, repeat that day&#39;s focus the next day. Don&#39;t pile two new things onto the same day.</p>
<h2 id="days-1-to-3-menu-orders-and-the-kitchen">Days 1 to 3: menu, orders, and the kitchen</h2>
<h3 id="day-1-learn-the-menu">Day 1: learn the menu</h3>
<p>Start by clocking in. In Kazeer, staff clock in and out from their phone with a selfie that&#39;s matched to the face they registered. If their role requires a location check, the location is also matched to the outlet where they work, and the clock-in fails if it doesn&#39;t match. Stay with them while they register their face with a few photos, with their consent, and the first time they clock in. Also tell them that in the app, only the owner sees their attendance records, including the selfie and location.</p>
<p>Then go through the menu item by item: the name, the price, what&#39;s in it, and which items get ordered most. If you can, let them taste your best sellers so they can answer customers&#39; questions. Also show them where the spare receipt paper, the small change, and anything else a cashier often needs are kept.</p>
<p>For the rest of the day, they stand next to the coach and watch how orders are taken. At the end of the day, name your five best sellers and ask them for the prices.</p>
<h3 id="day-2-take-orders">Day 2: take orders</h3>
<p>Today they take orders themselves, while the coach handles payments. That way they focus on one thing.</p>
<p>In Kazeer, the cashier picks the items and the amount to pay is worked out right away. Each order is marked Dine-in with its table number, or Takeaway. Practice two habits:</p>
<ul role="list">
<li>Read the order back to the customer before saving it.</li>
<li>For Dine-in, ask the customer for the table number. Don&#39;t guess from where they walked in.</li>
</ul>
<h3 id="day-3-the-kitchen-and-order-statuses">Day 3: the kitchen and order statuses</h3>
<p>Orders go to the kitchen from the same record, so the cashier and the kitchen read the same order. Take the new cashier to the kitchen for a moment when an order comes in, so they see what happens after they save an order.</p>
<p>Then teach the order statuses in the app, such as Unpaid, Waiting, Cooking, and Done. Ask them to explain each one in their own words. What each status means for the cashier and the kitchen is in the <a href="https://kazeer.ai/en/blog/kitchen-order-flow/">guide to the cashier to kitchen order flow</a>.</p>
<p>When a customer asks &quot;where&#39;s my order?&quot;, the cashier answers from the status, without walking to the kitchen.</p>
<h2 id="day-4-payments-and-receipts">Day 4: payments and receipts</h2>
<p>Kazeer records cash, QRIS, and card payments on the same order. Practice all three today.</p>
<p>For cash, teach the same steps every time:</p>
<ol>
<li>Say the amount received, for example, &quot;I&#39;ve got Rp50,000 from you.&quot;</li>
<li>Put that money on top of the drawer, not straight into it.</li>
<li>Count out the change, then hand it over while saying the amount.</li>
<li>Only then put the customer&#39;s money in the drawer.</li>
</ol>
<div class="md-note" role="note" data-kind="example"><p><strong>Example:</strong> An order of 1 Kopi Susu Aren at Rp22,000 and 1 bread roll at Rp16,000 comes to Rp38,000. The customer pays with Rp50,000. The change is Rp50,000 − Rp38,000 = Rp12,000, say one Rp10,000 note and one Rp2,000 note. The prices here are only an example.</p>
</div>
<p>With dynamic QRIS, a QR code is made for each transaction with the amount already in it, so the customer doesn&#39;t type the amount in. For QRIS and card, teach one habit: make sure the payment went through before the customer leaves.</p>
<p>Stress the right payment method too. An order paid by QRIS but recorded as cash means the drawer won&#39;t match at the end of the day.</p>
<p>If your outlet uses a receipt printer, receipts print from the POS app. Also practice changing the paper roll, since paper can run out when it&#39;s busy.</p>
<h2 id="days-5-and-6-mistakes-and-the-cash-up">Days 5 and 6: mistakes and the cash-up</h2>
<h3 id="day-5-the-rush-and-mistakes">Day 5: the rush and mistakes</h3>
<p>Today the new cashier works the rush, with the coach standing beside them. Mistakes will almost certainly happen, and that&#39;s part of the training. What you&#39;re practicing is how to handle them.</p>
<p>Mistakes that often come up in the first week:</p>
<ul role="list">
<li>Picking the wrong item, quantity, or table number.</li>
<li>A customer cancels or changes an order after it&#39;s recorded.</li>
<li>The wrong payment method is selected.</li>
<li>A QRIS or card payment fails.</li>
<li>The drawer runs out of small notes for change.</li>
</ul>
<p>For all of them, the rule is the same: stop, politely tell the customer the order is being checked, then call the coach. The coach decides how to sort it out. The new cashier shouldn&#39;t try to fix it alone by guessing.</p>
<p>Write every mistake in a notebook: what happened and how it was sorted out. The notebook is for training, not for punishment. If there&#39;s a question about the app the coach can&#39;t answer, contact Kazeer&#39;s customer support: WhatsApp 24/7, answered by the team daily from 09:00 to 21:00 WIB.</p>
<p>An order that hasn&#39;t been paid can be cancelled, and the cancellation stays visible in the records, so you can look at it again when you read the mistakes notebook.</p>
<p>If the internet drops, the POS keeps working. Data is saved on the device, then saved to the cloud once the connection is back.</p>
<h3 id="day-6-the-cash-up">Day 6: the cash-up</h3>
<p>At the end of the shift, the new cashier counts the drawer, then the coach counts it again. The result is compared with the cash total for that shift. Kazeer shows totals per payment method and per cashier shift, so there&#39;s nothing to recap. Before counting, check for orders still marked Unpaid. The full steps are in the <a href="https://kazeer.ai/en/blog/end-of-day-cash-up/">guide to the end-of-day cash-up</a>.</p>
<h2 id="day-7-the-end-of-week-check">Day 7: the end-of-week check</h2>
<p>On day seven, the new cashier runs one full shift. The coach stays nearby but only steps in when called.</p>
<p>At the end of the shift, use this list. Judge by what you saw during the shift, not by asking questions:</p>
<ol>
<li>Takes Dine-in orders with the right table number, and Takeaway orders.</li>
<li>Answers customers&#39; questions about their order from its status in the app.</li>
<li>Gives the right change for cash.</li>
<li>Makes sure QRIS and card payments go through.</li>
<li>Picks the right payment method on every order.</li>
<li>Prints receipts and changes the paper roll.</li>
<li>Calls the coach when unsure.</li>
<li>Counts the drawer at closing with the same result as the coach.</li>
<li>Clocks in and out with a selfie.</li>
</ol>
<p>If they meet every point, they&#39;re ready to run a shift alone. If some aren&#39;t there yet, don&#39;t repeat the whole week. Add two or three coached shifts for just those points.</p>
<p>After that, read the mistakes notebook and the cash-up records at the end of the second week. Mistakes that keep coming back show what needs more practice. Keep this plan, and use it again for your next cashier.</p>
]]></content:encoded>
      <category>Staff</category>
      <dc:creator>The Kazeer team</dc:creator>
      <pubDate>Mon, 12 Oct 2026 00:00:00 GMT</pubDate>
      <enclosure url="https://kazeer.ai/img/blog/kasir-baru-og.jpg" length="87990" type="image/jpeg" />
    </item>
    <item>
      <title>Best sellers aren&#39;t always the most profitable: how to map your menu</title>
      <link>https://kazeer.ai/en/blog/best-sellers-vs-most-profitable/</link>
      <guid isPermaLink="true">https://kazeer.ai/en/blog/best-sellers-vs-most-profitable/</guid>
      <description>Rate each item on how many sold and the gross profit per serving, sort it into one of four groups, then take a different step for each group.</description>
      <content:encoded><![CDATA[<p>Ask Kazeer AI &quot;What sells best?&quot; (in Indonesian, &quot;Apa yang paling laku?&quot;), and the answer looks something like this (sample data): &quot;This week your best seller is Kopi Susu Aren, with 128 cups sold.&quot; (Kazeer AI mostly replies in Indonesian; this answer is translated.)</p>
<p>That answer matters, but it&#39;s only half the picture. The item that sells the most doesn&#39;t always leave you the most money per serving. Some items sell well because they&#39;re cheap, and some rarely get ordered even though each serving earns a lot.</p>
<p>This article uses a simple menu map: you rate each item on two questions, then place it in one of four groups. Each group calls for a different move.</p>
<div class="md-note" role="note" data-kind="example"><p><strong>Example:</strong> Every menu item, price, COGS figure, and sales number in this article is an example, not data from a real business.</p>
</div>
<h2 id="two-questions-for-every-item">Two questions for every item</h2>
<p>For each menu item, answer two things for the same period, such as one month:</p>
<ol>
<li>How many servings did you sell?</li>
<li>How much gross profit does each serving earn? That&#39;s the selling price minus the COGS per serving.</li>
</ol>
<p>Your sales records show how many of each item you sold. The COGS per serving comes from your costing. If you don&#39;t have it yet, start with the <a href="https://kazeer.ai/en/blog/cogs-per-menu-item/">guide to calculating COGS per menu item</a>. In Kazeer, COGS per item can also be calculated from the item&#39;s recipe. Use selling prices before tax.</p>
<p>Multiply the two and you get the item&#39;s total gross profit for the month. That number combines how well it sells and how much it earns, so it&#39;s useful for seeing which items contribute the most. To decide what to do, though, you need to look at the two questions separately.</p>
<p>If your menu is long, make separate maps for drinks and food. Comparing iced tea with Nasi Goreng isn&#39;t fair, because their prices and COGS are so different.</p>
<h2 id="four-menu-groups">Four menu groups</h2>
<p>You compare each item against two lines:</p>
<ul role="list">
<li>The sales line: average servings sold per item, which is total servings sold divided by the number of items.</li>
<li>The profit line: average gross profit per serving, which is total gross profit divided by total servings sold.</li>
</ul>
<p>Those two lines put every item into one group:</p>
<div class="md-table" role="region" tabindex="0" aria-label="Four menu groups (table, scrollable)"><table><thead><tr><td></td><th scope="col">Gross profit per serving above average</th><th scope="col">Gross profit per serving below average</th></tr></thead><tbody><tr><th scope="row">Sales above average</th><td>Sells well, earns well</td><td>Sells well, earns little</td></tr><tr><th scope="row">Sales below average</th><td>Earns well, sells little</td><td>Sells little, earns little</td></tr></tbody></table></div>
<h2 id="a-worked-example-with-six-items">A worked example with six items</h2>
<p>Say these are one month&#39;s sales at a cafe. The Kopi Susu Aren COGS is the dine-in example from the COGS guide.</p>
<div class="md-table" role="region" tabindex="0" aria-label="A worked example with six items (table, scrollable)"><table><thead><tr><th scope="col">Item</th><th scope="col" style="text-align:right">Sold</th><th scope="col" style="text-align:right">Selling price</th><th scope="col" style="text-align:right">COGS</th><th scope="col" style="text-align:right">Gross profit per serving</th><th scope="col" style="text-align:right">Total gross profit</th></tr></thead><tbody><tr><td>Kopi Susu Aren</td><td style="text-align:right">460</td><td style="text-align:right">Rp22,000</td><td style="text-align:right">Rp8,400</td><td style="text-align:right">Rp13,600</td><td style="text-align:right">Rp6,256,000</td></tr><tr><td>Teh Tarik</td><td style="text-align:right">280</td><td style="text-align:right">Rp15,000</td><td style="text-align:right">Rp5,800</td><td style="text-align:right">Rp9,200</td><td style="text-align:right">Rp2,576,000</td></tr><tr><td>Nasi Goreng</td><td style="text-align:right">220</td><td style="text-align:right">Rp30,000</td><td style="text-align:right">Rp13,000</td><td style="text-align:right">Rp17,000</td><td style="text-align:right">Rp3,740,000</td></tr><tr><td>Americano</td><td style="text-align:right">110</td><td style="text-align:right">Rp20,000</td><td style="text-align:right">Rp4,400</td><td style="text-align:right">Rp15,600</td><td style="text-align:right">Rp1,716,000</td></tr><tr><td>Croissant Butter</td><td style="text-align:right">80</td><td style="text-align:right">Rp20,000</td><td style="text-align:right">Rp8,600</td><td style="text-align:right">Rp11,400</td><td style="text-align:right">Rp912,000</td></tr><tr><td>Roti Bakar</td><td style="text-align:right">50</td><td style="text-align:right">Rp15,000</td><td style="text-align:right">Rp7,000</td><td style="text-align:right">Rp8,000</td><td style="text-align:right">Rp400,000</td></tr><tr><td><strong>Total</strong></td><td style="text-align:right"><strong>1,200</strong></td><td style="text-align:right"></td><td style="text-align:right"></td><td style="text-align:right"></td><td style="text-align:right"><strong>Rp15,600,000</strong></td></tr></tbody></table></div>
<p>The two lines:</p>
<ul role="list">
<li>Sales line: 1,200 servings ÷ 6 items = 200 servings.</li>
<li>Profit line: Rp15,600,000 ÷ 1,200 servings = Rp13,000 per serving.</li>
</ul>
<p>The resulting map:</p>
<div class="md-table" role="region" tabindex="0" aria-label="A worked example with six items (table, scrollable) (2)"><table><thead><tr><th scope="col">Item</th><th scope="col">Sold</th><th scope="col">Gross profit per serving</th><th scope="col">Group</th></tr></thead><tbody><tr><td>Kopi Susu Aren</td><td>460, above 200</td><td>Rp13,600, above Rp13,000</td><td>Sells well, earns well</td></tr><tr><td>Nasi Goreng</td><td>220, above 200</td><td>Rp17,000, above Rp13,000</td><td>Sells well, earns well</td></tr><tr><td>Teh Tarik</td><td>280, above 200</td><td>Rp9,200, below Rp13,000</td><td>Sells well, earns little</td></tr><tr><td>Americano</td><td>110, below 200</td><td>Rp15,600, above Rp13,000</td><td>Earns well, sells little</td></tr><tr><td>Croissant Butter</td><td>80, below 200</td><td>Rp11,400, below Rp13,000</td><td>Sells little, earns little</td></tr><tr><td>Roti Bakar</td><td>50, below 200</td><td>Rp8,000, below Rp13,000</td><td>Sells little, earns little</td></tr></tbody></table></div>
<p>Kopi Susu Aren is the best seller and brings in the most gross profit overall. But per cup, Americano leaves you Rp2,000 more, and Nasi Goreng Rp3,400 more. Teh Tarik sold 60 more servings than Nasi Goreng, yet its total gross profit is Rp1,164,000 lower.</p>
<h2 id="what-to-do-with-each-group">What to do with each group</h2>
<h3 id="sells-well-earns-well-keep-and-protect">Sells well, earns well: keep and protect</h3>
<p>Kopi Susu Aren and Nasi Goreng are in this group. These items already work, so don&#39;t change them without a strong reason.</p>
<ul role="list">
<li>Make sure their ingredients never run out during the rush. For how to set a minimum stock level, see the <a href="https://kazeer.ai/en/blog/daily-ingredient-stock-check/">guide to ingredient stock</a>.</li>
<li>Keep the amounts and the taste the same, whoever makes them.</li>
<li>They don&#39;t need a discount. They already sell at full price.</li>
</ul>
<h3 id="sells-well-earns-little-reprice-or-re-cost">Sells well, earns little: reprice or re-cost</h3>
<p>Teh Tarik is in this group. Lots of people buy it, but each glass leaves you little.</p>
<ul role="list">
<li>Recalculate its COGS with your latest receipts. Ingredient prices may have gone up since you last worked it out.</li>
<li>Check the amounts at the bar. Pouring more than the recipe says raises COGS without anyone noticing.</li>
<li>Consider a small price increase. If Teh Tarik goes up Rp1,000 and you still sell 280 glasses, gross profit grows by Rp280,000 a month. For how to work out a price, see the <a href="https://kazeer.ai/en/blog/menu-pricing-from-cogs/">article on setting menu prices</a>.</li>
</ul>
<h3 id="earns-well-sells-little-promote-or-reposition">Earns well, sells little: promote or reposition</h3>
<p>Americano is in this group. Each cup earns a lot, but few people order it.</p>
<ul role="list">
<li>Ask your cashier to suggest it, for example to customers who can&#39;t decide on a coffee.</li>
<li>Move it somewhere easier to see on the menu.</li>
<li>Pair it with another item in a bundle. You set the bundle price in Kazeer&#39;s promo feature. For how to cost a bundle that still pays, see the <a href="https://kazeer.ai/en/blog/slow-hour-promotions/">article on slow-hour promotions</a>.</li>
</ul>
<p>If you sell 30 more Americanos a month, gross profit grows by 30 × Rp15,600 = Rp468,000.</p>
<h3 id="sells-little-earns-little-rethink-or-drop">Sells little, earns little: rethink or drop</h3>
<p>Croissant Butter and Roti Bakar are in this group. Before you drop them, answer these first:</p>
<ul role="list">
<li>Does the item go with something else? Coffee buyers may come in partly because there&#39;s bread to eat with it.</li>
<li>Do other items use the same ingredients? If so, you&#39;ll still need to buy those ingredients after you drop it.</li>
<li>Do regular customers always order it?</li>
</ul>
<p>If the answers are no, change the recipe or the price, prepare fewer each day, or take it off the menu. Items that rarely sell can leave you with wasted ingredients. For ways to cut that, see the <a href="https://kazeer.ai/en/blog/reduce-ingredient-waste/">article on ingredient waste</a>.</p>
<p>Croissant Butter is also close to the line: its gross profit per serving is only Rp1,600 below average. Items near a line can move to another group next month, so look at two or three months before you decide.</p>
<h2 id="repeat-it-every-month">Repeat it every month</h2>
<p>A menu map is useful when you keep it current. Make one at the start of each month, using periods of the same length.</p>
<ul role="list">
<li>In Kazeer, your sales records show the items sold, and COGS is recorded from every sale. Reports show sales, COGS, and gross profit, for each outlet. See an example in the <a href="https://kazeer.ai/en/#reports">reports section</a>.</li>
<li>In the middle of the month, ask <a href="https://kazeer.ai/en/#kazeer-ai">Kazeer AI</a> &quot;What sells best?&quot; on the web or in WhatsApp for a quick check.</li>
<li>Update COGS whenever an ingredient price changes. An item can move to another group just because milk got more expensive.</li>
<li>Change one thing per item in a month, such as only the price of Teh Tarik. If you change everything at once, you won&#39;t know which change made the difference.</li>
</ul>
<h2 id="start-with-your-own-menu">Start with your own menu</h2>
<ol>
<li>Take last month&#39;s number sold for each item from your sales records.</li>
<li>Write down each item&#39;s selling price and COGS per serving, then work out its gross profit per serving and in total.</li>
<li>Work out the two lines: average servings sold per item and average gross profit per serving.</li>
<li>Place each item in one of the four groups.</li>
<li>Pick one move for one item in each group, and write down the date.</li>
<li>Next month, make the map again and compare.</li>
</ol>
]]></content:encoded>
      <category>Money</category>
      <dc:creator>The Kazeer team</dc:creator>
      <pubDate>Mon, 12 Oct 2026 00:00:00 GMT</pubDate>
      <enclosure url="https://kazeer.ai/img/blog/menu-laku-untung-og.jpg" length="92785" type="image/jpeg" />
    </item>
    <item>
      <title>How to build a shift schedule around your busy hours</title>
      <link>https://kazeer.ai/en/blog/shift-schedule-busy-hours/</link>
      <guid isPermaLink="true">https://kazeer.ai/en/blog/shift-schedule-busy-hours/</guid>
      <description>Find your busy hours from sales records, decide how many people each period needs, overlap shifts around the rush, and see a sample week for a small cafe.</description>
      <content:encoded><![CDATA[<p>Picture noon. The line reaches the door, one cashier is serving alone, and the kitchen is three orders behind. At 15:00 the cafe is quiet, and four staff members are standing around waiting for customers. You have enough staff. They&#39;re just working at the wrong hours.</p>
<p>A schedule that fits starts from your own outlet&#39;s busy hours, not from the habit of splitting the day into morning and afternoon.</p>
<h2 id="find-your-busy-and-slow-hours">Find your busy and slow hours</h2>
<p>Collect notes for two weeks, weekends included, because weekdays and weekends can look very different. There are three sources.</p>
<p>First, what you and your shift leads see: when the line starts to grow, and when the kitchen starts to fall behind.</p>
<p>Second, your sales records. In Kazeer, today&#39;s sales report updates itself throughout the day. Write down the sales figure every hour, then subtract each note from the next one. The difference is what you sold in that hour. You can also ask Kazeer AI &quot;How much have I sold today?&quot; and write down the answer with the time. Kazeer also shows totals per cashier shift. Those are enough to compare the morning and late shifts, but the rush only shows up in hourly notes.</p>
<div class="md-table" role="region" tabindex="0" aria-label="Find your busy and slow hours (table, scrollable)"><table><thead><tr><th scope="col">Noted at</th><th scope="col" style="text-align:right">Today&#39;s sales so far</th><th scope="col" style="text-align:right">Sales in the past hour</th></tr></thead><tbody><tr><td>09:00</td><td style="text-align:right">Rp300,000</td><td style="text-align:right">Rp300,000</td></tr><tr><td>10:00</td><td style="text-align:right">Rp550,000</td><td style="text-align:right">Rp250,000</td></tr><tr><td>11:00</td><td style="text-align:right">Rp850,000</td><td style="text-align:right">Rp300,000</td></tr><tr><td>12:00</td><td style="text-align:right">Rp1,600,000</td><td style="text-align:right">Rp750,000</td></tr><tr><td>13:00</td><td style="text-align:right">Rp2,300,000</td><td style="text-align:right">Rp700,000</td></tr><tr><td>14:00</td><td style="text-align:right">Rp2,500,000</td><td style="text-align:right">Rp200,000</td></tr><tr><td>15:00</td><td style="text-align:right">Rp2,650,000</td><td style="text-align:right">Rp150,000</td></tr></tbody></table></div>
<p>The numbers in this table are an example. In it, each hour between 11:00 and 13:00 brings in Rp700,000 or more, over twice as much as any other hour. That&#39;s the rush.</p>
<p>Third, business advice from Kazeer AI, which you can ask for in the chat. A sample: &quot;Your busy hours are 11:00 to 13:00. Get your stock ready and promote your signature items.&quot; (Kazeer AI gives its advice in Indonesian; this example is translated.) Use it as a check on your own notes.</p>
<p>Sales in rupiah don&#39;t always match how busy you are. Ten single coffees keep a cashier busier than one large order of the same value. If you&#39;re unsure, also tally the number of orders per hour on paper for a few days.</p>
<p>Note your slow hours too. That&#39;s when staff take breaks in turn and do prep work. You can also fill slow hours with a promotion, and the <a href="https://kazeer.ai/en/blog/slow-hour-promotions/">article on slow-hour promotions</a> shows how.</p>
<h2 id="decide-how-many-people-each-period-needs">Decide how many people each period needs</h2>
<p>Split the working day into periods, then decide how many people each station needs: cashier, kitchen or bar, and floor, meaning serving orders and clearing tables.</p>
<p>An example for a cafe open from 08:00 to 21:00, with a weekday rush from 11:00 to 13:00:</p>
<div class="md-table" role="region" tabindex="0" aria-label="Decide how many people each period needs (table, scrollable)"><table><thead><tr><th scope="col">Period</th><th scope="col" style="text-align:right">Cashier</th><th scope="col" style="text-align:right">Kitchen/bar</th><th scope="col" style="text-align:right">Floor</th><th scope="col" style="text-align:right">Total</th></tr></thead><tbody><tr><td>07:00 to 10:00 (prep and morning)</td><td style="text-align:right">1</td><td style="text-align:right">1</td><td style="text-align:right">0</td><td style="text-align:right">2</td></tr><tr><td>10:00 to 14:00 (prep, the rush, and just after)</td><td style="text-align:right">1</td><td style="text-align:right">1</td><td style="text-align:right">1</td><td style="text-align:right">3</td></tr><tr><td>14:00 to 17:00 (afternoon)</td><td style="text-align:right">1</td><td style="text-align:right">1</td><td style="text-align:right">0</td><td style="text-align:right">2</td></tr><tr><td>17:00 to 21:30 (evening and closing)</td><td style="text-align:right">1</td><td style="text-align:right">1</td><td style="text-align:right">0</td><td style="text-align:right">2</td></tr></tbody></table></div>
<p>On weekends, say your notes show the busy stretch running longer, into the afternoon. Add one person from midday until closing.</p>
<p>For each period, ask three questions. Which station can never be empty? Who can cover two jobs in slow hours, such as a cashier who also makes simple drinks? What has to get done, like cleaning and counting the cash at closing? Consider having two people at closing, so nobody does that work alone.</p>
<p>In Kazeer, staff access is set per task and per outlet, and each staff member has their own role, such as Cashier or Kitchen staff. Make sure whoever you schedule on the POS has Cashier access, and whoever is in the kitchen has Kitchen staff access.</p>
<h2 id="overlap-shifts-around-the-rush">Overlap shifts around the rush</h2>
<p>The worst time to change shifts is in the middle of the rush. The people leaving are in a hurry, the people arriving aren&#39;t ready, and orders fall through the gap.</p>
<ul role="list">
<li>Change shifts after the rush, as the cafe starts to quiet down.</li>
<li>Let shifts overlap: the next shift arrives before the previous one leaves, so there&#39;s time for a handover.</li>
<li>If your rush is short, consider one short shift just for the rush, for example for part-time staff.</li>
<li>Stagger breaks outside the rush. Don&#39;t let everyone go on break at once.</li>
</ul>
<p>At handover, pass on what the next shift needs to know: ingredients running low, orders not yet done, and anything unusual that day.</p>
<h2 id="get-everything-ready-before-the-rush">Get everything ready before the rush</h2>
<p>The rush is no time to chop ingredients or hunt for cups. Write a list of the prep that has to be done before the rush, and who does it:</p>
<ul role="list">
<li>Enough ingredients for your best sellers to get through the rush. How to check is in the <a href="https://kazeer.ai/en/blog/daily-ingredient-stock-check/">guide to daily ingredient stock checks</a>.</li>
<li>Ingredients cut, measured, or brewed to the day&#39;s expected sales.</li>
<li>Cups, lids, straws, and takeaway packaging stocked near the bar.</li>
<li>Enough change in the cash drawer.</li>
<li>Enough receipt paper, if your outlet uses a receipt printer.</li>
<li>POS tablets or phones charged.</li>
</ul>
<p>Kazeer AI&#39;s advice above points the same way: get your stock and your signature-item promotion ready before the rush.</p>
<h2 id="a-sample-weekly-schedule-for-a-small-cafe">A sample weekly schedule for a small cafe</h2>
<p>This example is made up. The cafe is open from 08:00 to 21:00, with six full-time staff and two part-time staff. Cashiers: Nia, Putri, and Eko. Kitchen and bar: Agus, Dewi, and Fajar. Part-time, for the floor and helping at the bar: Bayu and Wulan.</p>
<p>There are three shifts:</p>
<ul role="list">
<li>Morning: 07:00 to 14:30</li>
<li>Rush: 10:00 to 14:00</li>
<li>Late: 14:00 to 21:30</li>
</ul>
<div class="md-table" role="region" tabindex="0" aria-label="A sample weekly schedule for a small cafe (table, scrollable)"><table><thead><tr><th scope="col">Day</th><th scope="col">Morning</th><th scope="col">Rush</th><th scope="col">Late</th></tr></thead><tbody><tr><td>Monday</td><td>Eko, Dewi</td><td>Bayu</td><td>Putri, Fajar</td></tr><tr><td>Tuesday</td><td>Eko, Dewi</td><td>Bayu</td><td>Putri, Fajar</td></tr><tr><td>Wednesday</td><td>Nia, Agus</td><td>Bayu</td><td>Eko, Dewi</td></tr><tr><td>Thursday</td><td>Nia, Agus</td><td>Bayu</td><td>Eko, Dewi</td></tr><tr><td>Friday</td><td>Nia, Agus</td><td>Bayu</td><td>Putri, Fajar</td></tr><tr><td>Saturday</td><td>Nia, Agus</td><td>Wulan</td><td>Putri, Eko, Fajar</td></tr><tr><td>Sunday</td><td>Nia, Dewi</td><td>Wulan</td><td>Putri, Fajar, Agus</td></tr></tbody></table></div>
<p>Days off: Nia and Agus on Monday and Tuesday, Putri and Fajar on Wednesday and Thursday, Eko on Friday and Sunday, Dewi on Friday and Saturday.</p>
<p>How to read this schedule:</p>
<ul role="list">
<li>Every morning and late shift has at least one cashier and one person in the kitchen or at the bar.</li>
<li>On weekdays, there are two people from 07:00, three from 10:00 to 14:00, four during the handover until 14:30, then two until closing. On weekends, the late shift has three.</li>
<li>Morning staff take their breaks in turn after Bayu or Wulan arrives at 10:00, before the rush starts.</li>
<li>The late shift arrives at 14:00, after the rush. The handover takes half an hour as the cafe quiets down, and the morning shift leaves at 14:30.</li>
<li>Nobody leaves at 21:30 and then works the morning shift the next day.</li>
</ul>
<div class="md-note" role="note" data-kind="note"><p><strong>Note:</strong> The shift lengths, breaks, days off, and overtime in this example are only an illustration. Working hours in your business must follow the labor rules that apply and your employment agreements with your staff.</p>
</div>
<h2 id="publish-the-schedule-and-handle-swaps">Publish the schedule and handle swaps</h2>
<p>A good schedule still falls apart if it&#39;s announced at the last minute.</p>
<ul role="list">
<li>Publish next week&#39;s schedule on the same day every week, for example Thursday. Send it to your staff WhatsApp group and post it on the kitchen wall.</li>
<li>Write down your rules for swaps: who to ask, how far ahead, and swaps only between people who can do the same job, cashier with cashier.</li>
<li>Every time a swap is approved, update the schedule on the wall and in the group.</li>
</ul>
<p>If the person covering works a different station or at another outlet, make sure their Kazeer access is set for that task and outlet before the shift starts. If their role requires a location check, the clock-in location is matched to the outlet where they work, so without that, their clock-in at another outlet will fail.</p>
<p>In Kazeer, staff clock in and clock out from their phone with a selfie that&#39;s matched to the face they registered. For roles that require a location check, their location is also matched to the outlet where they work. In the app, only the owner sees the attendance records, so you compare them with the schedule yourself. Do it once a week, so swaps nobody recorded show up quickly. How to do that is in the <a href="https://kazeer.ai/en/blog/staff-attendance-selfie/">article on attendance with a selfie</a>.</p>
<h2 id="start-next-week">Start next week</h2>
<ol>
<li>For two weeks, write down sales every hour and watch when the line starts to grow.</li>
<li>Mark your busy and slow hours, separately for weekdays and weekends.</li>
<li>Decide how many people each period and each station needs.</li>
<li>Build shifts that overlap around the rush, with shift changes after the rush is over.</li>
<li>Write a prep list for before the rush, with the name of whoever does each task.</li>
<li>Publish the schedule on the same day every week, and review how you split the shifts once a month.</li>
</ol>
]]></content:encoded>
      <category>Staff</category>
      <dc:creator>The Kazeer team</dc:creator>
      <pubDate>Mon, 12 Oct 2026 00:00:00 GMT</pubDate>
      <enclosure url="https://kazeer.ai/img/blog/jadwal-shift-og.jpg" length="78969" type="image/jpeg" />
    </item>
    <item>
      <title>How to set up your POS before opening your first cafe</title>
      <link>https://kazeer.ai/en/blog/pos-setup-new-cafe/</link>
      <guid isPermaLink="true">https://kazeer.ai/en/blog/pos-setup-new-cafe/</guid>
      <description>Menu and prices, payments, staff roles, opening stock, and a trial run, with a checklist for the week before, the day before, and opening day.</description>
      <content:encoded><![CDATA[<p>In the weeks before you open your first cafe, most of your attention goes to the renovation, the bar equipment, and the permits. The POS side can easily slip to the day before, yet that&#39;s where the first order is taken and the first customer pays. If the menu isn&#39;t fully in the app or the printer has never been tested, the opening-day line pays for it.</p>
<p>This guide covers only the POS side: menu and prices, payments, who does what, opening stock, a trial run, and plans. At the end there&#39;s a checklist for the week before, the day before, and opening day.</p>
<h2 id="menu-and-prices">Menu and prices</h2>
<p>Get your final menu list ready before you enter it in the POS app. For each item, write down:</p>
<ul role="list">
<li>The item name, exactly as it appears on your menu board, so the cashier can find it quickly.</li>
<li>The category, such as coffee, non-coffee, food, and snacks.</li>
<li>The COGS, meaning the cost of ingredients and packaging for one serving.</li>
<li>The selling price.</li>
</ul>
<p>If an item is sold hot and iced at different prices, list them as two lines so the prices don&#39;t get mixed up. If you have bundle prices, such as a coffee and a pastry, or promo prices, set them in Kazeer&#39;s promo feature.</p>
<p>Work out COGS first, then set the price. How to calculate COGS is in the <a href="https://kazeer.ai/en/blog/cogs-per-menu-item/">guide to COGS per menu item</a>, and how to set a price from COGS is in the <a href="https://kazeer.ai/en/blog/menu-pricing-from-cogs/">guide to menu pricing</a>.</p>
<p>Also decide whether your menu prices include tax. In Kazeer, you can set up both VAT (PPN) and regional tax (pajak daerah), and COGS and tax are recorded from every sale. Check which taxes and rates apply to your business with a tax consultant or your local tax office.</p>
<p>A shorter menu in the first weeks is easier for the cashier to learn, easier to count stock for, and wastes fewer ingredients. You can add items once you know what sells.</p>
<h2 id="payments-devices-and-receipts">Payments, devices, and receipts</h2>
<p>Kazeer records cash, dynamic QRIS, and card payments on the same order. Get all three ready before you open:</p>
<ul role="list">
<li>Cash: prepare a starting float with enough small notes for change. How to set it is in the <a href="https://kazeer.ai/en/blog/end-of-day-cash-up/">guide to the end-of-day cash-up</a>.</li>
<li>Dynamic QRIS: a QR code is made for each transaction with the amount already in it, so the customer doesn&#39;t type the amount in. Online payment with dynamic QRIS comes with all three plans. Well before opening, ask the Kazeer team what you need to prepare and which account the money goes to.</li>
<li>Card: if you want to accept cards, get the payment device ready and test it before opening day.</li>
</ul>
<p>Kazeer runs on phones, tablets, and computers. Choose devices for the cashier, the kitchen, and servers to fit your counter and order flow. There&#39;s a guide in the <a href="https://kazeer.ai/en/blog/pos-device-phone-tablet-computer/">article on POS devices</a>.</p>
<p>For receipts, connect a receipt printer and print from the POS app. Keep spare paper from the start.</p>
<h2 id="who-does-what">Who does what</h2>
<p>In Kazeer, each staff member has their own login and role, and their access is set per task and per outlet:</p>
<div class="md-table" role="region" tabindex="0" aria-label="Who does what (table, scrollable)"><table><thead><tr><th scope="col">Role</th><th scope="col">What they do</th></tr></thead><tbody><tr><td>Owner</td><td>You. Set up the menu, prices, and staff access, and read the reports.</td></tr><tr><td>Cashier</td><td>Take Dine-in or Takeaway orders, take payments, and print receipts.</td></tr><tr><td>Kitchen staff</td><td>Read the orders sent to the kitchen or bar.</td></tr><tr><td>Waiter</td><td>Serve guests at their tables.</td></tr></tbody></table></div>
<p>Write down a name for each role, then set up their access before the first shift, not when customers are already in line. Don&#39;t lend the owner account to anyone. How to do it is in the <a href="https://kazeer.ai/en/blog/staff-access-multi-outlet/">guide to staff access</a>.</p>
<p>In Kazeer, staff clock in and out from their phone with a selfie that&#39;s matched to the face they registered. If their role requires a location check, the location is also matched to the outlet where they work, and the clock-in fails if it doesn&#39;t match. So have everyone register their face and try clocking in at the outlet before opening day. In the app, only the owner sees the attendance records, including the selfies and locations. There&#39;s a guide in the <a href="https://kazeer.ai/en/blog/staff-attendance-selfie/">article on attendance with a selfie</a>, and how to build the schedule is in the <a href="https://kazeer.ai/en/blog/shift-schedule-busy-hours/">guide to shift schedules</a>.</p>
<h2 id="opening-stock">Opening stock</h2>
<p>The item list you set up now is the one you&#39;ll use every day after opening. The steps:</p>
<ol>
<li>From each item&#39;s recipe, list every ingredient and piece of packaging used.</li>
<li>Count your opening stock in the same units as the recipe, such as grams, ml, or pieces.</li>
<li>Enter the item list, the opening stock, and each item&#39;s recipe in Kazeer.</li>
<li>Mark the ingredients that, if they run out, stop you from selling your best sellers. These are the ones to count every day.</li>
</ol>
<p>In Kazeer, COGS per menu item can be calculated from its recipe, and ingredient stock goes down automatically with each sale. That automatic deduction follows sales, so ingredients that get spilled or thrown out aren&#39;t counted. In the first week, you also don&#39;t know your daily usage yet. So count stock every day from day one. After a week or two, those counts become the basis for your minimum stock. How to do it is in the <a href="https://kazeer.ai/en/blog/daily-ingredient-stock-check/">guide to checking ingredient stock</a>, and how to store ingredients so older stock gets used first is in the <a href="https://kazeer.ai/en/blog/fifo-ingredient-stock/">FIFO guide</a>.</p>
<h2 id="a-trial-run-before-opening-day">A trial run before opening day</h2>
<p>Invite family or friends one or two days before you open, and ask them to order like regular customers. The simplest way to keep your reports clean is to make it real sales: they pay the normal price. If you use practice orders, keep in mind that a paid order can&#39;t be cancelled. Practice orders that haven&#39;t been paid can be cancelled once the trial run is over, and the cancellations stay visible in the records, so you can check which orders were only practice.</p>
<p>Make sure the trial run covers all of these:</p>
<ol>
<li>A Dine-in order with a table number.</li>
<li>A Takeaway order.</li>
<li>A cash payment with a large note, so the cashier practices giving change.</li>
<li>A payment by dynamic QRIS.</li>
<li>A payment by card, if you accept cards.</li>
<li>An order that reaches the kitchen and moves from Waiting to Cooking to Done.</li>
<li>A printed receipt.</li>
<li>A customer who changes their mind after the order is recorded. The cashier calls you, and you decide how to sort it out, such as cancelling that order while it&#39;s still unpaid and recording a new one.</li>
</ol>
<p>After the trial run, open today&#39;s sales report. It updates itself, so every trial order should already be there. Finish with a practice cash-up.</p>
<h2 id="the-demo-training-and-choosing-a-plan">The demo, training, and choosing a plan</h2>
<p>Book a demo with the Kazeer team before you enter your menu. In the demo, you see how an order goes from being taken to showing up in the reports. Tell them which devices and printer you already have, so the Kazeer team can help match them.</p>
<p>Staff training from the Kazeer team comes with Standard Monthly and Standard Annual, not with the Free plan. If you choose a Standard plan, schedule the training before your trial run. If you choose the Free plan, you do the training yourself. There&#39;s a training plan in the <a href="https://kazeer.ai/en/blog/training-a-new-cashier/">guide to training a new cashier</a>.</p>
<p>The plans at a glance:</p>
<div class="md-table" role="region" tabindex="0" aria-label="The demo, training, and choosing a plan (table, scrollable)"><table><thead><tr><th scope="col">Plan</th><th scope="col">Cost</th><th scope="col">Notes</th></tr></thead><tbody><tr><td>Free plan</td><td>Rp0 forever</td><td>A Rp500 platform fee per transaction, paid by the customer, an initial deposit of Rp50,000, no staff training</td></tr><tr><td>Standard Monthly</td><td>Rp250,000 per month</td><td>No platform fee, staff training included</td></tr><tr><td>Standard Annual</td><td>Rp2,000,000 per year</td><td>No platform fee, staff training and a free tablet stand included</td></tr></tbody></table></div>
<p>All three plans include access for owner, cashier, kitchen staff, and table order, dynamic QRIS, Inventory and the Kazeer AI chatbot, and customer support (WhatsApp 24/7, answered by the team daily from 09:00 to 21:00 WIB).</p>
<p>Plan prices are per outlet, so the table shows the cost for one outlet. The Free plan&#39;s initial deposit is a balance the platform fee is deducted from, so the balance doesn&#39;t go negative.</p>
<p>A new cafe has no transaction history yet, so start from an estimate. How to work it out is in the <a href="https://kazeer.ai/en/blog/kazeer-plans-free-or-standard/">guide to choosing a plan</a>, and the details are in the <a href="https://kazeer.ai/en/#pricing">pricing section</a>.</p>
<h2 id="checklist-before-and-on-opening-day">Checklist before and on opening day</h2>
<h3 id="a-week-before-opening">A week before opening</h3>
<ol>
<li>Your menu, COGS, and selling prices are final.</li>
<li>You&#39;ve had the demo with the Kazeer team and chosen a plan.</li>
<li>The menu and prices are in Kazeer.</li>
<li>The POS device, the kitchen device, and the receipt printer are connected and tested.</li>
<li>You&#39;ve asked about and sorted out what dynamic QRIS needs.</li>
<li>Every staff member has a role and access that fit their task and outlet.</li>
<li>Staff training is scheduled, or your own training is planned.</li>
</ol>
<h3 id="the-day-before-opening">The day before opening</h3>
<ol>
<li>The trial run has covered every situation above.</li>
<li>Opening stock is counted and recorded.</li>
<li>A starting float with enough small notes is ready.</li>
<li>Spare receipt paper is on hand.</li>
<li>All staff have registered their face and tried clocking in and out with a selfie at the outlet.</li>
<li>The first week&#39;s shift schedule is posted on the wall.</li>
</ol>
<h3 id="opening-day">Opening day</h3>
<ol>
<li>Come in early. Switch on the devices and the printer, check the receipt paper, and make sure the internet is connected.</li>
<li>Write the starting float in the cash book.</li>
<li>You, or whoever knows the POS flow best, stand near the counter through the first rush.</li>
<li>Write every problem on one sheet of paper. Fix what&#39;s urgent, and go over the rest after closing.</li>
<li>Do the cash-up with the cashier at the end of the day.</li>
<li>The next morning, read the sales report and check stock, then pick one or two things to fix. The order to read the report in is in the <a href="https://kazeer.ai/en/blog/daily-sales-report/">guide to the daily sales report</a>.</li>
</ol>
]]></content:encoded>
      <category>Operations</category>
      <dc:creator>The Kazeer team</dc:creator>
      <pubDate>Mon, 12 Oct 2026 00:00:00 GMT</pubDate>
      <enclosure url="https://kazeer.ai/img/blog/buka-kafe-pertama-og.jpg" length="91622" type="image/jpeg" />
    </item>
    <item>
      <title>How to calculate COGS per menu item, with a Kopi Susu Aren example</title>
      <link>https://kazeer.ai/en/blog/cogs-per-menu-item/</link>
      <guid isPermaLink="true">https://kazeer.ai/en/blog/cogs-per-menu-item/</guid>
      <description>Work out the COGS of one Kopi Susu Aren from what you pay for each ingredient, then see its share of the price and the gross profit per cup.</description>
      <content:encoded><![CDATA[<p>Say you sell Kopi Susu Aren, iced coffee with milk and palm sugar, for Rp22,000 a cup. How much of that goes to the coffee, milk, palm sugar, ice, and cup? How much is left for rent, wages, and your own profit? The answer starts with your COGS per menu item.</p>
<p>The example below uses one cup of Kopi Susu Aren. The same method works for food, baked goods, and other drinks.</p>
<h2 id="what-cogs-per-menu-item-means">What COGS per menu item means</h2>
<p>COGS stands for cost of goods sold. In a food and drink business, COGS per menu item usually means what you spend on the ingredients and packaging used up to make one serving: one cup of coffee, one plate of Nasi Goreng, or one slice of cake.</p>
<p>What goes into COGS per menu item:</p>
<ul role="list">
<li>The ingredients in the recipe, at the amount used for one serving.</li>
<li>Single-use packaging, such as plastic cups, lids, straws, boxes, or bags.</li>
<li>Ingredients lost to waste or spills while you make the item.</li>
</ul>
<p>What you don&#39;t count per serving: rent, staff wages, electricity, water, internet, and equipment payments. You still have to pay these, but they don&#39;t belong to any one cup. Track them separately as operating costs. You&#39;ll use them again when you set a target.</p>
<h2 id="write-down-each-ingredient-and-amount">Write down each ingredient and amount</h2>
<p>Start from the recipe your bar or kitchen actually uses. Ask your barista to make one cup the usual way, then weigh and measure every ingredient. Eyeballed amounts vary from one person to the next, and the difference ends up in your costs.</p>
<p>For each ingredient and piece of packaging, write down three things:</p>
<ol>
<li>The purchase price from your latest receipt. If you pay for delivery, add it to the purchase price.</li>
<li>The pack size you buy, such as 1 kg, 1 liter, or 50 pieces.</li>
<li>The amount used in one serving.</li>
</ol>
<p>Then use two formulas:</p>
<ul role="list">
<li>Unit price = purchase price ÷ pack size</li>
<li>Cost per serving = unit price × amount used</li>
</ul>
<p>Convert to the same unit before you divide: 1 kg = 1,000 g and 1 liter = 1,000 ml. Add up the cost per serving of every ingredient and piece of packaging, add waste, and you have the COGS of one serving.</p>
<p>In Kazeer, COGS per item can be calculated from the item&#39;s recipe. Working it out by hand, as in the example below, still helps you see where the number comes from and check the amounts in the recipe.</p>
<h2 id="costing-one-cup-of-kopi-susu-aren">Costing one cup of Kopi Susu Aren</h2>
<p>This example uses rounded prices so it&#39;s easy to follow. Swap in the prices from your own receipts.</p>
<p>The sample recipe: espresso from 18 g of coffee beans, 150 ml of UHT milk, 35 ml of palm sugar syrup, and 150 g of ice. Takeaway adds a plastic cup, a lid, and a straw.</p>
<div class="md-table" role="region" tabindex="0" aria-label="Costing one cup of Kopi Susu Aren (table, scrollable)"><table><thead><tr><th scope="col">Item</th><th scope="col">Purchase price</th><th scope="col">Unit price</th><th scope="col">Amount</th><th scope="col" style="text-align:right">Cost per cup</th></tr></thead><tbody><tr><td>Coffee beans</td><td>Rp200,000/kg</td><td>Rp200/g</td><td>18 g</td><td style="text-align:right">Rp3,600</td></tr><tr><td>UHT milk</td><td>Rp18,000/liter</td><td>Rp18/ml</td><td>150 ml</td><td style="text-align:right">Rp2,700</td></tr><tr><td>Palm sugar syrup</td><td>Rp40,000/liter</td><td>Rp40/ml</td><td>35 ml</td><td style="text-align:right">Rp1,400</td></tr><tr><td>Ice</td><td>Rp20,000/10 kg</td><td>Rp2/g</td><td>150 g</td><td style="text-align:right">Rp300</td></tr><tr><td>Ingredients total</td><td></td><td></td><td></td><td style="text-align:right">Rp8,000</td></tr><tr><td>Waste and spills (5% of ingredients)</td><td></td><td></td><td></td><td style="text-align:right">Rp400</td></tr><tr><td><strong>COGS, dine-in</strong></td><td></td><td></td><td></td><td style="text-align:right"><strong>Rp8,400</strong></td></tr><tr><td>Plastic cup</td><td>Rp30,000 for 50</td><td>Rp600 each</td><td>1</td><td style="text-align:right">Rp600</td></tr><tr><td>Lid</td><td>Rp7,500 for 50</td><td>Rp150 each</td><td>1</td><td style="text-align:right">Rp150</td></tr><tr><td>Straw</td><td>Rp5,000 for 100</td><td>Rp50 each</td><td>1</td><td style="text-align:right">Rp50</td></tr><tr><td><strong>COGS, takeaway</strong></td><td></td><td></td><td></td><td style="text-align:right"><strong>Rp9,200</strong></td></tr></tbody></table></div>
<p>How to read the first row: coffee beans cost Rp200,000 per kg. Since 1 kg = 1,000 g, the unit price is Rp200,000 ÷ 1,000 = Rp200 per gram. One cup uses 18 g, so the beans cost Rp200 × 18 = Rp3,600.</p>
<p>Takeaway COGS is the dine-in COGS plus packaging: Rp8,400 + Rp600 + Rp150 + Rp50 = Rp9,200.</p>
<p>In this example, dine-in orders are served in a glass that gets washed and reused, with no straw, so there&#39;s no packaging cost. If your dine-in orders come with a disposable straw, add it to your dine-in COGS.</p>
<h2 id="account-for-waste-and-spills">Account for waste and spills</h2>
<p>Not everything you buy ends up in a customer&#39;s cup. Some beans go into dialing in the grinder, some milk stays at the bottom of the carton, palm sugar syrup gets spilled, and drinks get remade when an order is wrong. You pay for all of it. Leave out the waste line and the COGS on paper comes out lower than what you really spend.</p>
<p>The 5% in the table is only an example. Find your own number by comparing what you actually used with what the recipe says you used:</p>
<ol>
<li>Pick one ingredient that&#39;s easy to track, such as UHT milk.</li>
<li>Work out what you actually used in a month: opening stock plus deliveries, minus closing stock.</li>
<li>Work out what the recipe says you used: servings sold × amount per serving. If several menu items use it, add them all up.</li>
<li>The difference between the two is your waste. Divide it by the recipe amount.</li>
</ol>
<div class="md-note" role="note" data-kind="example"><p><strong>Example:</strong> Last month you sold 400 milk drinks with 150 ml of milk each. By the recipe, you used 400 × 150 ml = 60 liters. Your stock records show 8 liters at the start of the month, 62 liters delivered, and 7 liters left at the end, so you really used 8 + 62 − 7 = 63 liters. The difference is 3 liters, and 3 ÷ 60 = 5%.</p>
</div>
<p>Use that percentage for all ingredients as an estimate, or work it out per ingredient if you have time. For a routine to record and check ingredient stock, read the <a href="https://kazeer.ai/en/blog/daily-ingredient-stock-check/">guide to ingredient stock</a>.</p>
<p>In Kazeer, ingredient stock goes down automatically with each sale. So the gap between the stock Kazeer shows and your physical count at the end of the month already shows your waste: ingredients thrown out or used without being recorded.</p>
<p>If your waste is high, don&#39;t just add it to COGS. Find the cause: amounts that change from cup to cup, ingredients that expire before you use them, or orders that keep getting remade.</p>
<h2 id="compare-cogs-with-the-selling-price">Compare COGS with the selling price</h2>
<p>Once you have the COGS, work out two numbers:</p>
<ul role="list">
<li>COGS percentage = COGS ÷ selling price × 100%</li>
<li>Gross profit per serving = selling price − COGS</li>
</ul>
<p>Use the selling price before tax. The tax your customer pays goes to the government, so it isn&#39;t income for your business. If your menu prices already include tax, take the tax out first.</p>
<div class="md-table" role="region" tabindex="0" aria-label="Compare COGS with the selling price (table, scrollable)"><table><thead><tr><th scope="col">Per cup</th><th scope="col" style="text-align:right">Dine-in</th><th scope="col" style="text-align:right">Takeaway</th></tr></thead><tbody><tr><td>Selling price</td><td style="text-align:right">Rp22,000</td><td style="text-align:right">Rp22,000</td></tr><tr><td>COGS</td><td style="text-align:right">Rp8,400</td><td style="text-align:right">Rp9,200</td></tr><tr><td>COGS percentage</td><td style="text-align:right">38.2%</td><td style="text-align:right">41.8%</td></tr><tr><td>Gross profit</td><td style="text-align:right">Rp13,600</td><td style="text-align:right">Rp12,800</td></tr></tbody></table></div>
<p>The percentages are rounded to one decimal place. At the same price, each takeaway cup earns Rp800 less gross profit, the cost of its packaging. You can accept that gap or set a different takeaway price.</p>
<h3 id="set-your-own-target">Set your own target</h3>
<p>No single COGS percentage fits every business, because rent, wages, and customer numbers differ from place to place. A useful target comes from your own numbers:</p>
<ol>
<li>Add up your monthly operating costs: rent, wages, electricity, water, internet, and equipment payments.</li>
<li>Decide how much net profit you want each month.</li>
<li>Estimate how many servings you sell in a month across the whole menu, ideally from the last few months of sales records.</li>
<li>Divide the total of steps 1 and 2 by the number from step 3. The result is the average gross profit each serving needs to earn.</li>
</ol>
<div class="md-note" role="note" data-kind="example"><p><strong>Example:</strong> Operating costs are Rp15,000,000 a month, your net profit target is Rp5,000,000, and you sell 2,000 servings a month. Each serving needs to earn an average gross profit of (Rp15,000,000 + Rp5,000,000) ÷ 2,000 = Rp10,000.</p>
</div>
<p>That figure is an average across the whole menu. For Kopi Susu Aren at Rp22,000, it means COGS should stay at or below Rp22,000 − Rp10,000 = Rp12,000 a cup. The example&#39;s COGS of Rp8,400 and Rp9,200 are both under that limit.</p>
<p>Cheap items, like iced tea, can earn less than the average as long as the rest of the menu makes up for it. The ones to look at are best sellers whose gross profit falls well below the target: check their price, their recipe amounts, or their packaging.</p>
<p>Once you have a target, the COGS percentage is useful for keeping watch. If it goes up while the price stays the same, a cost has gone up, the amounts have drifted, or waste has grown.</p>
<h2 id="when-to-recalculate">When to recalculate</h2>
<p>Recalculate COGS whenever one of its numbers changes:</p>
<ul role="list">
<li>A supplier&#39;s price goes up or down, delivery charges included.</li>
<li>You switch brands, buy a different pack size, or change suppliers.</li>
<li>The recipe changes: more milk, a different cup size, or a new topping.</li>
<li>Your takeaway packaging changes, such as plastic cups to paper cups.</li>
<li>Your waste number changes after you check it again.</li>
</ul>
<p>Small changes per cup add up fast. Say UHT milk goes from Rp18,000 to Rp20,000 a liter. The milk in each cup goes from Rp2,700 to Rp3,000, a difference of Rp300. At 400 cups a month, that&#39;s Rp120,000 a month, before waste.</p>
<p>Even when nothing seems to have changed, check the prices in your costing against your latest receipts once a month.</p>
<h2 id="track-the-results-in-your-reports">Track the results in your reports</h2>
<p>Costing per cup helps you set prices and targets. To see how things actually go from day to day, you need sales reports.</p>
<p>In Kazeer, COGS and tax are recorded from every sale, for each outlet, and you can set up both VAT (PPN) and regional tax (pajak daerah). Check with your tax office or a tax consultant which taxes apply to your business. Reports show sales, COGS, gross profit, net profit after the operating costs you record, and tax. Today&#39;s sales report updates itself, with no manual recap. If you run several outlets, they&#39;re all in one report. See an example in the <a href="https://kazeer.ai/en/#reports">reports section</a>.</p>
<p>A routine you can start this week:</p>
<ol>
<li>Work out the COGS of your best-selling items with a table like the one above.</li>
<li>Set an average gross profit target per serving from your operating costs and profit target.</li>
<li>Check COGS and gross profit in your reports every week.</li>
<li>Whenever a receipt shows a new price, update the costing for every item that uses that ingredient.</li>
</ol>
]]></content:encoded>
      <category>Money</category>
      <dc:creator>The Kazeer team</dc:creator>
      <pubDate>Mon, 12 Oct 2026 00:00:00 GMT</pubDate>
      <enclosure url="https://kazeer.ai/img/blog/hpp-menu-og.jpg" length="86667" type="image/jpeg" />
    </item>
    <item>
      <title>How to check ingredient stock daily so best sellers don&#39;t run out</title>
      <link>https://kazeer.ai/en/blog/daily-ingredient-stock-check/</link>
      <guid isPermaLink="true">https://kazeer.ai/en/blog/daily-ingredient-stock-check/</guid>
      <description>A daily stock routine for owners and shift leads: which items to count, when to count them, and how to set a minimum from your own usage.</description>
      <content:encoded><![CDATA[<p>Picture this: it&#39;s noon, the line at the counter is long, and your barista says there&#39;s one carton of milk left. Orders for Kopi Susu Aren, your best seller, get turned away until someone has time to run to the store.</p>
<p>Chances are the milk was already low at closing the night before, but nobody counted it.</p>
<p>The routine below prevents that. Count a few key items at the same time every day, then compare each count with a minimum you set yourself. An owner or shift lead can finish it in a few minutes.</p>
<h2 id="pick-the-items-to-count">Pick the items to count</h2>
<p>You don&#39;t need to count the whole storeroom every day. Count only the items your best sellers can&#39;t be made without.</p>
<p>To build the list:</p>
<ol>
<li>Take your five best sellers from your sales report. If you&#39;re new to reading it, start with <a href="https://kazeer.ai/en/blog/daily-sales-report/">our guide to the daily sales report</a>.</li>
<li>For each one, write down the ingredients you can&#39;t swap for something else. Kopi Susu Aren needs coffee beans, UHT milk, palm sugar, ice, and cups with lids. Nasi Goreng needs rice, eggs, cooking oil, and your spice paste.</li>
<li>Merge the ingredients that show up in more than one menu item, so nothing gets counted twice. That&#39;s your daily count list.</li>
</ol>
<p>Keep the list short, say five to ten items, because a long list is easy to skip on a busy shift. If you end up with more, keep the ones that run out fastest or are hardest to buy at short notice. Everything else, like dish soap or napkins, can be counted once a week.</p>
<p>Packaging counts too. If a lot of your orders are takeaway, cups, lids, and bags matter as much as the food.</p>
<h2 id="count-at-the-same-time-every-day">Count at the same time every day</h2>
<p>Pick one time, opening or closing, and stick with it. Counts taken at different times can&#39;t be compared.</p>
<p>A closing count shows what&#39;s left after a full day of sales. You still have the evening to order or move stock, so it works well if your suppliers deliver in the morning.</p>
<p>An opening count captures what&#39;s actually on the shelf before the first order, including anything delivered that morning. The catch is that you have less time to act before the rush.</p>
<p>To make the counts reliable:</p>
<ul role="list">
<li>Count in the same units you buy in: liters, kilograms, or pieces.</li>
<li>Estimate opened packs, say half a carton. What matters is doing it the same way every day.</li>
<li>Write a number, not &quot;plenty&quot; or &quot;we&#39;re fine.&quot;</li>
<li>Make one person responsible for the count, such as the shift lead on duty at that hour.</li>
</ul>
<p>Your daily counts also tell you your usage: yesterday&#39;s count, plus what came in, minus today&#39;s count. Say you close Monday with 15 liters of UHT milk, and a 12-liter delivery arrives on Tuesday, so you have 27 liters. If you close Tuesday with 21 liters left, you used 6 liters on Tuesday.</p>
<h2 id="set-a-minimum-from-your-own-usage">Set a minimum from your own usage</h2>
<p>Your minimum is the level that tells you to act. If today&#39;s count is below it, order or move stock that same day.</p>
<p>You can&#39;t copy this number from another business, because usage and delivery schedules differ from place to place. What you want is enough stock to last until the next delivery arrives, even if that day is busy.</p>
<p>A simple way to set it, if you count at closing:</p>
<ol>
<li>Track daily usage for a week, as above.</li>
<li>Take the highest daily usage from that week.</li>
<li>Multiply it by the delivery time: the number of days from placing an order to the delivery arriving. Ordering tonight for delivery tomorrow morning, before you open, counts as 1 day.</li>
</ol>
<p>If you count at opening, add one day, because the stock you just counted still has to cover that day&#39;s sales. If deliveries usually arrive after you open, add one more day.</p>
<p>Worked example:</p>
<div class="md-table" role="region" tabindex="0" aria-label="Set a minimum from your own usage (table, scrollable)"><table><thead><tr><th scope="col">Item</th><th scope="col">Highest daily usage</th><th scope="col">Delivery time</th><th scope="col">Minimum</th></tr></thead><tbody><tr><td>UHT milk</td><td>9 liters</td><td>1 day</td><td>9 × 1 = 9 liters</td></tr><tr><td>Palm sugar</td><td>0.8 kg</td><td>2 days</td><td>0.8 × 2 = 1.6 kg</td></tr></tbody></table></div>
<p>If today&#39;s counts are 6 liters of UHT milk and 1.2 kg of palm sugar, both are below their minimums. Order or move both today, so you have enough to last until the next delivery arrives.</p>
<p>Write each minimum next to the item on your count list, so whoever counts can see right away what needs action. Review the numbers once a month, and sooner if your menu changes or you&#39;re planning a promotion.</p>
<h2 id="record-deliveries-and-use-older-stock-first">Record deliveries and use older stock first</h2>
<p>A delivery that isn&#39;t recorded makes your usage numbers wrong. Stock seems to grow for no reason, and that day&#39;s usage looks lower than it really was.</p>
<p>When a delivery arrives:</p>
<ol>
<li>Check the quantity against your order and the supplier&#39;s receipt.</li>
<li>Check expiry dates and packaging. Send back or note anything damaged.</li>
<li>Write down what you received, the date, and who received it. Keep the receipt.</li>
<li>Label each pack or container with the date it arrived.</li>
</ol>
<p>Then use first in, first out (FIFO): the stock that came in first gets used first. Put new deliveries behind or under the older stock, so staff reach for the older packs first. Old stock buried at the back is easy to miss until it expires.</p>
<p>For UHT milk, check the expiry date on each carton. If a new delivery expires sooner than the stock you already have, use the new cartons first. Once a carton is open, follow the storage instructions on the pack. Keep palm sugar in a closed, dry container.</p>
<h2 id="check-other-outlets-before-a-rush-buy">Check other outlets before a rush buy</h2>
<p>If you have more than one outlet, an item that&#39;s low at one may be sitting in surplus at another. Before you send staff out on a rush buy, check your other outlets.</p>
<p>A rush buy at the nearest shop usually means paying retail, and the shop may not carry the brand you normally use. The menu item can taste different, and if the price is higher, so is your COGS (cost of goods sold) per portion.</p>
<p>The rule: only move what the sending outlet has above its own minimum, so you don&#39;t just move the shortage somewhere else.</p>
<div class="md-note" role="note" data-kind="example"><p><strong>Example:</strong> The Seturan outlet is down to 1.2 kg of palm sugar, with a minimum of 1.6 kg. The Kaliurang outlet has 5 kg with a minimum of 2 kg, so it can spare up to 3 kg. Send 2 kg to Seturan: Seturan now has 3.2 kg and Kaliurang keeps 3 kg. Both stay above their minimums.</p>
</div>
<p>Record the transfer at both outlets: out at the sender, in at the receiver. Without that record, both outlets&#39; usage numbers come out wrong. The sender looks wasteful, and the receiver looks thrifty.</p>
<h2 id="where-kazeer-helps">Where Kazeer helps</h2>
<p>You can run all of this with a notebook. If you use Kazeer, some of the work happens in the same app you take orders with:</p>
<ul role="list">
<li>Kazeer&#39;s Inventory holds your list of items and ingredients. That&#39;s where you check stock and see what&#39;s left.</li>
<li>Ingredient stock goes down automatically with each sale. So if your physical count is lower than the stock Kazeer shows, the gap points to ingredients thrown out or used without being recorded.</li>
<li>Your sales records include the items sold, and today&#39;s sales report updates itself with no manual recap. Use them to pick the best sellers for your count list.</li>
<li>If you have more than one outlet, they&#39;re all in one account. The catalog and stock are managed per outlet, and you can move items to the outlet that needs them. <a href="https://kazeer.ai/en/#reports">See an example of reports and stock per outlet</a>.</li>
</ul>
<p>You can ask Kazeer AI questions in everyday words, on the web or in WhatsApp. Ask &quot;Which items need checking?&quot; and the answer can look like this (sample data): &quot;UHT milk is down to 6 liters and palm sugar to 1.2 kg.&quot; (Kazeer AI mostly replies in Indonesian; this answer is translated.) Compare that with the minimums on your list, then decide what to order and what to move. <a href="https://kazeer.ai/en/#kazeer-ai">See example questions for Kazeer AI</a>.</p>
<p>Inventory and the Kazeer AI chatbot are listed in all three Kazeer plans. <a href="https://kazeer.ai/en/blog/kazeer-plans-free-or-standard/">Our article on choosing a plan</a> compares them in full.</p>
<p>One more feature is in development: automatic ingredient orders to suppliers over WhatsApp when ingredient stock runs low. It&#39;s coming soon.</p>
<h2 id="the-daily-routine-as-one-checklist">The daily routine as one checklist</h2>
<p>Keep this list where you count, or send it to your staff WhatsApp group:</p>
<ol>
<li>Count the items on your daily list at the same time, in the same units.</li>
<li>Write each count next to its minimum.</li>
<li>Mark anything below its minimum.</li>
<li>If you have more than one outlet, check first whether another outlet has extra. If it does, move it and record the transfer at both outlets.</li>
<li>Order whatever is still short from your supplier that same day.</li>
<li>When a delivery arrives, check it against the receipt, write down the quantity, label it with the date, and put it behind the older stock.</li>
<li>Once a month, recalculate your minimums from recent usage.</li>
</ol>
]]></content:encoded>
      <category>Stock</category>
      <dc:creator>The Kazeer team</dc:creator>
      <pubDate>Mon, 12 Oct 2026 00:00:00 GMT</pubDate>
      <enclosure url="https://kazeer.ai/img/blog/stok-bahan-baku-og.jpg" length="99396" type="image/jpeg" />
    </item>
    <item>
      <title>How to keep orders straight from cashier to kitchen</title>
      <link>https://kazeer.ai/en/blog/kitchen-order-flow/</link>
      <guid isPermaLink="true">https://kazeer.ai/en/blog/kitchen-order-flow/</guid>
      <description>Lost slips, wrong tables, dishes made twice? Here is a one-record flow from cashier to kitchen, what each status means, and tips for the rush.</description>
      <content:encoded><![CDATA[<p>Picture a Saturday night in the middle of the dinner rush. Every table is taken, the takeaway line reaches the door, and the cashier writes orders on paper and tucks them into the kitchen window. One slip falls on the floor. Another says &quot;Table 7&quot; when the guests are sitting at Table 1. In the kitchen, the cook hears &quot;two Nasi Goreng!&quot; from two different people and makes four plates.</p>
<p>Mix-ups like these usually come from the flow. The order changes hands several times on paper and out loud, and every handoff is a chance to get it wrong. A cleaner flow starts with one rule: each order has one record, and everyone reads it from the same place.</p>
<h2 id="why-paper-slips-and-shouting-go-wrong">Why paper slips and shouting go wrong</h2>
<p>With paper and shouting, one order ends up in several versions: what the cashier wrote, what the server remembers, and what the kitchen heard. Those versions can differ, and in a rush nobody has time to check which one is right.</p>
<p>What tends to go wrong:</p>
<ul role="list">
<li>A slip gets tucked away, splashed, or blown off by the fan. Nobody notices the order is missing until the guest asks where the food is.</li>
<li>The table number is scribbled in a hurry or left off. The food goes to the wrong table while the right one keeps waiting.</li>
<li>An order gets shouted, and then the slip arrives too. The kitchen can&#39;t tell it&#39;s the same order, so the dish gets made twice and the extra goes in the trash.</li>
<li>What the kitchen cooked doesn&#39;t match what the cashier charged, because they worked from different notes.</li>
</ul>
<p>So guests wait longer, ingredients go to waste, and the end-of-day recap may not match the cash drawer.</p>
<h2 id="one-order-one-record">One order, one record</h2>
<p>In Kazeer, the order is recorded once at the POS, and the cashier and the kitchen read that same record. Here&#39;s how it goes:</p>
<ol>
<li>The cashier picks menu items on the tablet, and the amount to pay is worked out right away.</li>
<li>The cashier marks the order Dine-in with its table number, or Takeaway.</li>
<li>The order goes to the kitchen from that same record. Kitchen staff read it in Kazeer, so the kitchen doesn&#39;t need a paper copy.</li>
<li>The order status moves from Waiting to Cooking to Done. Since the cashier and the kitchen read the same order, they both see the same status.</li>
</ol>
<div class="md-note" role="note" data-kind="example"><p><strong>Example:</strong> The cashier records an order for Table 4, Dine-in: 2 Kopi Susu Aren and 1 Nasi Goreng. The kitchen sees the order for Table 4 with exactly the same items. If anyone asks &quot;which table is this for?&quot;, the answer is already on the order.</p>
</div>
<p>You can see illustrations of the POS and kitchen screens in the <a href="https://kazeer.ai/en/#features">Kazeer features section</a>.</p>
<h2 id="what-the-order-statuses-mean">What the order statuses mean</h2>
<p>Kazeer shows order statuses such as Unpaid, Waiting, Cooking, and Done. When someone asks &quot;where&#39;s Table 7&#39;s order?&quot;, the answer is in the order&#39;s status.</p>
<div class="md-table" role="region" tabindex="0" aria-label="What the order statuses mean (table, scrollable)"><table><thead><tr><th scope="col">Status</th><th scope="col">For the cashier</th><th scope="col">For the kitchen</th></tr></thead><tbody><tr><td>Unpaid</td><td>No payment is recorded on this order yet. The bill is still open.</td><td>This status is about payment, and payment is recorded at the POS.</td></tr><tr><td>Waiting</td><td>The order is recorded and waiting its turn in the kitchen.</td><td>The order is in the queue and hasn&#39;t been started.</td></tr><tr><td>Cooking</td><td>The order is being made. If a guest asks, the cashier can answer without walking to the kitchen.</td><td>Someone is working on this order now.</td></tr><tr><td>Done</td><td>The kitchen has finished this order. It can go to the table or to the takeaway guest.</td><td>Finished. No need to touch it again.</td></tr></tbody></table></div>
<p>A status only helps when it matches what&#39;s really happening. An order that already left the kitchen but still says Cooking leads the cashier to tell a guest the wrong thing. So your team needs to agree on who changes each status, and when.</p>
<h2 id="who-does-what">Who does what</h2>
<p>In Kazeer, each staff member has their own login and role. Access for owner, cashier, kitchen staff, and table order comes with all three plans: Free, Standard Monthly, and Standard Annual.</p>
<p>For the order flow, the split can be this simple:</p>
<ul role="list">
<li>The cashier records orders, marks them Dine-in with a table number or Takeaway, and records payment.</li>
<li>Kitchen staff read incoming orders and work through them in order.</li>
<li>As the owner, you set each person&#39;s access by task and by the outlet where they work.</li>
</ul>
<p>Give each role only to the people who actually do that job. That way the cashier doesn&#39;t have to manage the kitchen queue, and the kitchen doesn&#39;t have to deal with payment.</p>
<p>For how to set access by task and outlet, see <a href="https://kazeer.ai/en/blog/staff-access-multi-outlet/">our guide to staff access</a>.</p>
<h2 id="payment-and-receipts-on-the-same-order">Payment and receipts on the same order</h2>
<p>Payment is recorded on the same order, so there&#39;s no second record to match up later. The cashier can record three ways to pay:</p>
<ul role="list">
<li>Cash.</li>
<li>Dynamic QRIS, a QR code made for each transaction with the amount already in it, so the customer doesn&#39;t type the amount in.</li>
<li>Card.</li>
</ul>
<p>Since the total was worked out when the cashier picked the items, nobody has to add it up again on a calculator.</p>
<p>Kazeer works on computers, tablets, and phones. For receipts, connect a receipt printer and print from the POS app. If you already have devices and a printer, the Kazeer team can help you check what fits.</p>
<p>Today&#39;s sales report also updates itself, so there&#39;s no recap from a pile of paper at the end of the shift. Kazeer also shows totals per payment method (cash, QRIS, card) and per cashier shift, which are the figures you compare against at the <a href="https://kazeer.ai/en/blog/end-of-day-cash-up/">cash-up</a>.</p>
<h2 id="tips-for-keeping-the-flow-clean-during-the-rush">Tips for keeping the flow clean during the rush</h2>
<p>A clean flow still needs the whole team working the same way. Here are rules you can post by the kitchen window and the cashier&#39;s counter:</p>
<ol>
<li>If it isn&#39;t in the POS, it doesn&#39;t get cooked. That includes add-ons from guests, like &quot;one more Es Teh, please.&quot; Record it at the POS first, then the kitchen starts.</li>
<li>If a guest cancels, cancel the order in Kazeer instead of only shouting it to the kitchen. The cancellation stays visible in the records, so you can check it again at closing.</li>
<li>Agree on who changes each status. A simple split: the cashier handles payment, and the kitchen moves orders from Waiting to Cooking to Done. When each status has one person in charge, two people aren&#39;t changing the same thing.</li>
<li>Update the status right away. A status changed late can mislead people as much as a lost slip. When cooking starts, set it to Cooking. When the order leaves the kitchen, set it to Done.</li>
<li>Work in the order things came in. The kitchen takes the oldest Waiting order first, unless your team has agreed otherwise, such as drinks first.</li>
<li>No Dine-in order without a table number. Have the cashier confirm the table with the guest before saving the order. This is the easiest place to stop wrong-table mix-ups.</li>
<li>New orders are read in Kazeer, not shouted. Save your voice for calling a server when an order is ready to go out.</li>
<li>Check Unpaid orders before closing. Before the shift ends, the cashier looks over any order still marked Unpaid, so no bill slips through.</li>
</ol>
]]></content:encoded>
      <category>Operations</category>
      <dc:creator>The Kazeer team</dc:creator>
      <pubDate>Mon, 12 Oct 2026 00:00:00 GMT</pubDate>
      <enclosure url="https://kazeer.ai/img/blog/pesanan-kasir-dapur-og.jpg" length="87001" type="image/jpeg" />
    </item>
    <item>
      <title>How to set staff access across several outlets</title>
      <link>https://kazeer.ai/en/blog/staff-access-multi-outlet/</link>
      <guid isPermaLink="true">https://kazeer.ai/en/blog/staff-access-multi-outlet/</guid>
      <description>Who can do what, at which outlet. How to split the roles in Kazeer, handle new staff and departures, and run attendance with a selfie.</description>
      <content:encoded><![CDATA[<p>Picture this: you just opened your second outlet. To save time, every cashier logs in to the app with your owner account. That means every cashier can open the gross profit report for both outlets and change the menu catalog. Then one cashier quits, and they still know how to log in to that account.</p>
<p>There&#39;s a cleaner way to set this up: each staff member gets their own access, based on their job and the outlet where they work.</p>
<h2 id="the-rule-only-the-access-each-job-needs">The rule: only the access each job needs</h2>
<p>Each person gets the access their job and their outlet require, and nothing more.</p>
<p>A cashier needs to take orders and payments. Kitchen staff need to see the orders they have to cook. Neither of them needs the gross profit report for every outlet, or the menu catalog settings.</p>
<p>The fewer people who can change the menu and stock, the smaller the chance that something changes by accident. Your sales and profit numbers don&#39;t need to be in front of everyone, either. And when someone leaves, you remove that one person&#39;s access while everyone else keeps working as usual.</p>
<div class="md-note" role="note" data-kind="note"><p><strong>Note:</strong> Don&#39;t lend out the owner account, even to the staff member you trust most. The owner account opens every outlet, every report, and every attendance record.</p>
</div>
<p>Giving each person their own access is easier to start while your team is still small, before the next outlet opens.</p>
<h2 id="roles-in-kazeer">Roles in Kazeer</h2>
<p>In Kazeer, staff access is set by task and by outlet. Each staff member has their own login with a role. Owner, Cashier, and Kitchen staff access come with every plan, including the Free plan.</p>
<div class="md-table" role="region" tabindex="0" aria-label="Roles in Kazeer (table, scrollable)"><table><thead><tr><th scope="col">Role</th><th scope="col">What they do</th></tr></thead><tbody><tr><td>Owner</td><td>You. See every outlet and its reports in one account, set staff access, and see attendance records.</td></tr><tr><td>Cashier</td><td>Take Dine-in or Takeaway orders, accept cash, QRIS, or card, and print receipts.</td></tr><tr><td>Kitchen staff</td><td>Read the orders sent to the kitchen.</td></tr><tr><td>Store admin (manager), Waiter, Accountant</td><td>Other roles for your staff. Ask the Kazeer team which features each role can use.</td></tr></tbody></table></div>
<p>The cashier and the kitchen read the same order, so nobody has to copy orders onto paper for the kitchen. The full flow is in <a href="https://kazeer.ai/en/blog/kitchen-order-flow/">our article on getting orders from the POS to the kitchen</a>.</p>
<p>Table order isn&#39;t a staff role. With table order, guests scan the QR code on their table and order by themselves.</p>
<p>Choose a role based on what the person does every day, not on how long they&#39;ve worked for you or how much you trust them. A cashier who has been with you for three years still only needs the Cashier role if their job is at the register.</p>
<h2 id="decide-who-works-at-which-outlet">Decide who works at which outlet</h2>
<p>Once you have more than one outlet, roles alone aren&#39;t enough. You also set the outlet where each person works. Each team then works within the outlet and the access you give them.</p>
<p>Say you have three outlets. You could split it up like this:</p>
<div class="md-table" role="region" tabindex="0" aria-label="Decide who works at which outlet (table, scrollable)"><table><thead><tr><th scope="col">Staff</th><th scope="col">Role</th><th scope="col">Outlet</th></tr></thead><tbody><tr><td>You</td><td>Owner</td><td>All outlets</td></tr><tr><td>Rina</td><td>Cashier</td><td>Kaliurang outlet</td></tr><tr><td>Dimas</td><td>Kitchen staff</td><td>Seturan outlet</td></tr><tr><td>Sari</td><td>Cashier</td><td>Malioboro outlet</td></tr></tbody></table></div>
<p>Rina takes orders at Kaliurang, Dimas reads the orders coming into the Seturan kitchen, and Sari takes payments at Malioboro. You track all three outlets from one account, and one report covers them all. Kazeer plan prices are per outlet, and the more outlets you have, the bigger the discount. Ask the Kazeer team for the price for three outlets.</p>
<p>Once a month, check the access settings in Kazeer against the schedule your team actually works: who still works for you, at which outlet, and in what role. Access settings easily fall behind whenever someone moves or leaves.</p>
<p>You can see an example of access by outlet in the <a href="https://kazeer.ai/en/#outlets">Multi-outlet section</a>.</p>
<h2 id="new-staff-moves-and-departures">New staff, moves, and departures</h2>
<p>Three moments change someone&#39;s access: when they start, when they move to another outlet, and when they leave.</p>
<h3 id="first-day">First day</h3>
<ol>
<li>Decide their role and the outlet where they&#39;ll work.</li>
<li>Set up their access in Kazeer before their first shift, not while customers are already lining up.</li>
<li>Have them register their face, then try clocking in from their own phone at the outlet while you or a coworker is nearby to help.</li>
<li>Give them time to practice before they work a rush alone.</li>
</ol>
<h3 id="moving-to-another-outlet">Moving to another outlet</h3>
<p>Access is set per outlet. If you move someone to another outlet, update their outlet in Kazeer before their first shift there. If their role requires a location check, their clock-in location is matched to that outlet, so without this update, their clock-in at the new outlet will fail.</p>
<h3 id="last-day">Last day</h3>
<p>Remove their access on their last day of work, not next week when you get around to it. Access you haven&#39;t removed can still be used, even by someone who no longer works for you.</p>
<p>While you&#39;re at it, take care of what sits outside the app: keys to the outlet and the cash drawer, the work WhatsApp group, and any passwords they had, like the outlet&#39;s Wi-Fi.</p>
<p>If someone quits without notice, remove their access as soon as you find out.</p>
<h2 id="attendance-with-a-selfie">Attendance with a selfie</h2>
<p>In Kazeer, staff clock in and out on their own phone with a selfie that&#39;s matched to the face they registered with a few photos, with their consent. If their role requires a location check, their location is also matched to the outlet where they work, and the clock-in fails if it doesn&#39;t match. In the app, only the owner sees the attendance records, including the selfies and locations.</p>
<p>Anyone can sign a paper attendance book at the register, including for a friend who hasn&#39;t shown up yet. A selfie shows the face of the person clocking in. And if you run several outlets, staff at every outlet clock in the same way, each on their own phone.</p>
<p>To keep attendance consistent across your outlets:</p>
<ul role="list">
<li>On day one, explain that attendance uses a selfie and their location, and when to clock in and out. For example, clock in as soon as they arrive at the outlet, before starting work, and clock out when the shift ends, before leaving.</li>
<li>Write your own rules on lateness and shift swaps, and share them in the same words at every outlet.</li>
<li>Agree on what to do if someone&#39;s phone acts up or their clock-in fails, such as messaging you right away.</li>
</ul>
<h2 id="train-staff-before-the-rush">Train staff before the rush</h2>
<p>The right access won&#39;t help much if your staff aren&#39;t comfortable with the app yet.</p>
<p>Staff training is included in Standard Monthly and Standard Annual, not in the Free plan. If you&#39;re about to open a new outlet, or several new people are starting at once, ask the Kazeer team about it.</p>
<p>A simple way to train: have a new hire shadow an experienced coworker for one shift before taking on the job alone. They see how that outlet works, then try it themselves with someone ready to help.</p>
<p>Before a new cashier works a rush alone, make sure they can:</p>
<ul role="list">
<li>Take Dine-in orders by table, and Takeaway orders.</li>
<li>Accept cash, QRIS, and card, and check that the payment is recorded on the same order.</li>
<li>Print a receipt from the POS app, if your outlet uses a receipt printer.</li>
<li>Read order statuses in the app, such as Unpaid, Waiting, Cooking, and Done.</li>
<li>Clock in and out with a selfie from their phone.</li>
</ul>
<p>For kitchen staff, practice reading the orders that come into the kitchen and their statuses.</p>
<p>If anyone gets stuck mid-shift, contact Kazeer&#39;s customer support, which comes with every plan: WhatsApp 24/7, answered by the team daily from 09:00 to 21:00 WIB.</p>
]]></content:encoded>
      <category>Staff</category>
      <dc:creator>The Kazeer team</dc:creator>
      <pubDate>Mon, 12 Oct 2026 00:00:00 GMT</pubDate>
      <enclosure url="https://kazeer.ai/img/blog/akses-karyawan-outlet-og.jpg" length="102906" type="image/jpeg" />
    </item>
    <item>
      <title>How to read your daily sales report each morning</title>
      <link>https://kazeer.ai/en/blog/daily-sales-report/</link>
      <guid isPermaLink="true">https://kazeer.ai/en/blog/daily-sales-report/</guid>
      <description>Sales, transactions, average per transaction, top sellers, low stock, COGS, and tax: what each number means and what to do about it.</description>
      <content:encoded><![CDATA[<p>A daily sales report is useful when its numbers help you decide something today, like buying ingredients that are running low or asking your cashiers to suggest a side item.</p>
<p>The way to get there is to check the same numbers every morning, before the rush, in the same order. Over time you&#39;ll learn what a normal day looks like at your outlet, so an odd number stands out quickly.</p>
<div class="md-note" role="note" data-kind="example"><p><strong>Example:</strong> To keep things concrete, this article uses one sample day. Yesterday was a Tuesday. Sales were Rp4,250,000 from 186 transactions, and the top seller was Kopi Susu Aren. This week, Kopi Susu Aren has sold 128 cups. Two items are running low: UHT milk (6 liters) and palm sugar (1.2 kg). Every number in this article is sample data, not from a real business.</p>
</div>
<h2 id="sales-and-transactions">Sales and transactions</h2>
<p>Sales is the total you sold in a day. The transaction count is how many payments the POS took, which is roughly the number of paid orders.</p>
<p>Read the two together. Rp4,250,000 on its own doesn&#39;t say much. Was it a lot of customers spending a little, or a few customers spending a lot? The transaction count answers that.</p>
<p>What to do:</p>
<ul role="list">
<li>If sales dropped but transactions held steady, customers came in as usual and spent less. Look at your side items and how your cashiers suggest them.</li>
<li>If transactions dropped, fewer customers came in. Check things outside the menu first: opening hours, weather, or events near the outlet.</li>
<li>If a number looks off, say far below normal, first make sure every order from yesterday was recorded and none is still unpaid. Check cancelled orders too, since they stay visible in the records.</li>
<li>If the internet at the outlet dropped, make sure the POS device is back online. Data saved on the device only reaches the cloud once there&#39;s a connection.</li>
</ul>
<h2 id="average-per-transaction">Average per transaction</h2>
<p>You can work this one out yourself: sales divided by transactions. In the example, Rp4,250,000 ÷ 186 = Rp22,849 (rounded).</p>
<p>Say a Kopi Susu Aren sells for Rp22,000 (a sample price). Then the average transaction is not much more than the price of one drink.</p>
<p>The average goes up when customers add something: a pastry, a snack, a larger size, or a drink and food bundle. A few things to try:</p>
<ul role="list">
<li>Have your cashiers suggest one side that goes with the order, like a pastry with a coffee.</li>
<li>Create a bundle with a clear price, such as coffee and a pastry. Bundle prices are set in Kazeer&#39;s promo feature.</li>
<li>Put side items near the counter or on the first page of the menu.</li>
</ul>
<p>Try one change at a time and watch the average for a week or two, comparing each day with the same day the week before. That way you&#39;ll know which change made the difference.</p>
<h2 id="compare-with-the-same-day-last-week">Compare with the same day last week</h2>
<p>The easy comparison is yesterday against the day before. The trouble is that each day of the week has its own pattern. Monday and Saturday sales can look very different without anything being wrong. So compare Tuesday with last Tuesday.</p>
<p>Last Tuesday&#39;s numbers below are sample data too:</p>
<div class="md-table" role="region" tabindex="0" aria-label="Compare with the same day last week (table, scrollable)"><table><thead><tr><td></td><th scope="col" style="text-align:right">Last Tuesday</th><th scope="col" style="text-align:right">Yesterday (Tuesday)</th><th scope="col">Change</th></tr></thead><tbody><tr><th scope="row">Sales</th><td style="text-align:right">Rp4,000,000</td><td style="text-align:right">Rp4,250,000</td><td>up Rp250,000 (6.25%)</td></tr><tr><th scope="row">Transactions</th><td style="text-align:right">160</td><td style="text-align:right">186</td><td>up 26 (16.25%)</td></tr><tr><th scope="row">Average per transaction</th><td style="text-align:right">Rp25,000</td><td style="text-align:right">Rp22,849</td><td>down Rp2,151</td></tr></tbody></table></div>
<p>Sales went up, which is good news. But transactions grew faster than sales, so the average per transaction fell. That means more customers came in, and on average each one spent less.</p>
<p>Why? Maybe a drink promo brought in new customers who didn&#39;t order food. Maybe a food item sold out early. The list of items sold will help you find out.</p>
<p>Two things to keep in mind:</p>
<ul role="list">
<li>If last Tuesday was a holiday, a payday, a day of heavy rain, or the day of a big event near the outlet, compare with two weeks ago instead.</li>
<li>One different day can be a fluke. When the same pattern shows up two or three weeks in a row, something has changed and needs your attention.</li>
</ul>
<h2 id="top-sellers-and-low-stock">Top sellers and low stock</h2>
<p>In our example, yesterday&#39;s top seller was Kopi Susu Aren, with 128 cups sold this week. The list of items sold gives you three things to check.</p>
<p>First, make sure you have enough to make it. The two items running low happen to be the main ingredients in Kopi Susu Aren: 6 liters of UHT milk and 1.2 kg of palm sugar. Work out how many cups that covers. The amounts per cup below are only an example, so use your own recipe:</p>
<div class="md-table" role="region" tabindex="0" aria-label="Top sellers and low stock (table, scrollable)"><table><thead><tr><th scope="col">Ingredient</th><th scope="col">Left in stock</th><th scope="col">Per cup</th><th scope="col">Enough for</th></tr></thead><tbody><tr><td>UHT milk</td><td>6 liters (6,000 ml)</td><td>150 ml</td><td>40 cups</td></tr><tr><td>Palm sugar</td><td>1.2 kg (1,200 g)</td><td>30 g</td><td>40 cups</td></tr></tbody></table></div>
<p>If you usually sell more than 40 cups of Kopi Susu Aren a day, buy more today, before the rush. Don&#39;t forget other drinks that use the same milk. To set a minimum stock level from your daily usage, see the guide to <a href="https://kazeer.ai/en/blog/daily-ingredient-stock-check/">ingredient stock</a>.</p>
<p>Second, look at the gross profit each item brings in, not just how many sold. Work it out as the selling price minus the ingredient cost per serving, times the number of servings sold. Your top seller isn&#39;t always the biggest earner, because an item with costly ingredients can sell well and still leave little per serving.</p>
<p>Third, look at the bottom of the list. An item that barely sells for weeks takes up room on the menu, and its ingredients can expire before you use them. Think about changing the recipe, putting it in a bundle, or taking it off the menu.</p>
<h2 id="cogs-gross-profit-and-tax">COGS, gross profit, and tax</h2>
<p>COGS (cost of goods sold) is what the ingredients cost for the items you sold, plus packaging where there is any. Gross profit is sales minus COGS.</p>
<div class="md-note" role="note" data-kind="example"><p><strong>Example:</strong> Say the Rp4,250,000 is sales before tax, and yesterday&#39;s COGS was Rp1,700,000. Rp4,250,000 minus Rp1,700,000 leaves Rp2,550,000 in gross profit. COGS came to 40% of sales (Rp1,700,000 ÷ Rp4,250,000).</p>
</div>
<p>The percentage is more useful than the rupiah amount, because you can compare it from day to day even when sales differ. If it rises while your menu prices stay the same, check these three things:</p>
<ul role="list">
<li>Sales shifted toward items with a higher COGS percentage. Compare the list of items sold with the same day last week.</li>
<li>A promo or discount ran. Customers paid less, while the ingredients cost the same.</li>
<li>Your supplier raised ingredient prices. Check your latest purchase receipts against the COGS you use for each menu item, and update any that changed.</li>
</ul>
<p>Some ingredient costs don&#39;t show up in the list of items sold: ingredients that are wasted or go bad, and portions bigger than the recipe. You can find this gap by comparing what your stock counts say you used with what your recipes say you should have used. If you&#39;ve never worked out COGS for each menu item, start with <a href="https://kazeer.ai/en/blog/cogs-per-menu-item/">how to calculate menu COGS</a>, which also covers waste and spills.</p>
<p>Gross profit also isn&#39;t money you can take home. Rent, staff wages, electricity, gas, and other costs haven&#39;t come out yet. Rp2,550,000 in gross profit for the day doesn&#39;t mean Rp2,550,000 in net profit.</p>
<p>Then there&#39;s tax. If your business charges customers tax, the tax in your report is money you&#39;ll pay out later, not income. Keep it apart from your daily cash, for example in a separate bank account, so it doesn&#39;t get spent on ingredients. In Kazeer, you can set up both VAT (PPN) and regional tax (pajak daerah). Check with a tax consultant or your local tax office which taxes and rates apply to your business.</p>
<h2 id="daily-reports-in-kazeer">Daily reports in Kazeer</h2>
<p>In Kazeer, today&#39;s sales report updates itself, so there&#39;s no manual recap. COGS and tax are recorded from every sale, per outlet, and the report shows sales, COGS, gross profit, net profit after the operating costs you record, and tax. COGS per menu item can be calculated from its recipe, and ingredient stock goes down automatically with each sale. If you have more than one outlet, they&#39;re all in one account, with one report for all of them. You can see an example in <a href="https://kazeer.ai/en/#reports">Kazeer&#39;s reports</a>.</p>
<p>With <a href="https://kazeer.ai/en/#kazeer-ai">Kazeer AI</a>, you can ask in the chat for yesterday&#39;s sales and number of transactions. From those two numbers, you can work out the average per transaction right away.</p>
<p>You can also ask in everyday words, on the web or in WhatsApp, such as &quot;What sells best?&quot; or &quot;Which items should I check?&quot; An answer looks like this (sample data): &quot;This week your best seller is Kopi Susu Aren, with 128 cups sold.&quot; (Kazeer AI mostly replies in Indonesian; this answer is translated.)</p>
<div class="md-note" role="note" data-kind="note"><p><strong>Note:</strong> The Kazeer AI chatbot is included in all three plans: Free, Standard Monthly, and Standard Annual. See <a href="https://kazeer.ai/en/#pricing">the plans</a> for what each one includes.</p>
</div>
<h2 id="your-morning-check-in-order">Your morning check, in order</h2>
<p>Save this list and run through it in the same order every morning:</p>
<ol>
<li>Yesterday&#39;s sales and transactions. Anything odd? Make sure every order was recorded.</li>
<li>Average per transaction: sales divided by transactions.</li>
<li>Those three numbers against the same day last week.</li>
<li>Top sellers, and the items that barely sold.</li>
<li>Low stock: work out how many servings it covers, then decide whether to buy today.</li>
<li>COGS as a percentage of sales, and gross profit.</li>
<li>Tax: set it aside from your daily cash.</li>
</ol>
<p>Then pick one or two actions for today. You don&#39;t need to change everything at once, because small changes are easier to judge. Write the action down, and check the result next week on the same day.</p>
]]></content:encoded>
      <category>Operations</category>
      <dc:creator>The Kazeer team</dc:creator>
      <pubDate>Mon, 12 Oct 2026 00:00:00 GMT</pubDate>
      <enclosure url="https://kazeer.ai/img/blog/laporan-penjualan-harian-og.jpg" length="78017" type="image/jpeg" />
    </item>
    <item>
      <title>How to ask Kazeer AI about your business on the web or in WhatsApp</title>
      <link>https://kazeer.ai/en/blog/ask-kazeer-ai/</link>
      <guid isPermaLink="true">https://kazeer.ai/en/blog/ask-kazeer-ai/</guid>
      <description>Four questions to start with, how to use answers about yesterday&#39;s sales and business advice, and which Kazeer plans include the Kazeer AI chatbot.</description>
      <content:encoded><![CDATA[<p>Picture this: it&#39;s 10 in the morning at your outlet. The cashier is getting busy, the kitchen is working through orders, and before lunch you want to know two things: what&#39;s selling best, and which ingredients need checking. There&#39;s no time to open one report after another.</p>
<p>For questions like these, you can ask Kazeer AI in everyday words, on the web or in WhatsApp. Below are four questions to start with, how to use the answers, and which Kazeer plans include the Kazeer AI chatbot.</p>
<div class="md-note" role="note" data-kind="example"><p><strong>Example:</strong> The four questions below are Kazeer&#39;s own example questions, written in Indonesian. Kazeer AI is set up for Indonesian. It usually understands questions in English, but it mostly replies in Indonesian, and English isn&#39;t officially supported yet. Each heading gives an English translation, and the sample answers are translated too. Every answer, summary, and number in this article is sample data, not from a real business.</p>
</div>
<h2 id="what-kazeer-ai-is">What Kazeer AI is</h2>
<p>Kazeer AI is an assistant that helps you understand your business records. You ask in everyday words, the way you&#39;d ask a coworker, on the web or in WhatsApp. Use whichever is handier at the moment: the web when you&#39;re at a computer, WhatsApp when you&#39;re in the kitchen or on the road.</p>
<p>You can also ask about yesterday&#39;s sales and ask for business advice. Neither is sent automatically, so ask in the chat when you need them. Both are covered below. You can see a sample conversation in the <a href="https://kazeer.ai/en/#kazeer-ai">Kazeer AI section</a>.</p>
<p>The decisions are still yours, because you know better than anyone what&#39;s going on at your outlet today.</p>
<h2 id="four-questions-to-start-with">Four questions to start with</h2>
<p>Together they cover what you probably check every day: what&#39;s selling, sales so far, stock, and what needs doing today.</p>
<h3 id="what-sells-best">&quot;What sells best?&quot;</h3>
<p>In Indonesian: &quot;Apa yang paling laku?&quot;</p>
<p>Sample answer: &quot;This week your best seller is Kopi Susu Aren, with 128 cups sold.&quot;</p>
<p>There are two things to do with this answer. First, make sure you have enough ingredients for that item to last the next few days. A best seller that runs out during the rush means lost sales.</p>
<p>Second, remember that your best seller isn&#39;t always your most profitable item. An item whose cost of goods sold (COGS) is high for its price can sell a lot and still earn you little per serving. Before you put it on promo, compare its price with its COGS per serving. To work that out, see <a href="https://kazeer.ai/en/blog/cogs-per-menu-item/">how to calculate menu COGS</a>.</p>
<h3 id="how-much-have-i-sold-today">&quot;How much have I sold today?&quot;</h3>
<p>In Indonesian: &quot;Berapa penjualan hari ini?&quot;</p>
<p>Sample answer: &quot;As of 10:30, today&#39;s sales are Rp1,104,000 from 48 transactions.&quot;</p>
<p>Look at the time. A number you ask for in the morning isn&#39;t a full day yet, so don&#39;t compare it with yesterday&#39;s total. Compare it with the same time on another day, such as the same day last week.</p>
<p>You can also work out the average per transaction from those two numbers: Rp1,104,000 ÷ 48 = Rp23,000. If that&#39;s well below your usual morning average, maybe more of this morning&#39;s customers bought a drink without food.</p>
<h3 id="which-items-should-i-check">&quot;Which items should I check?&quot;</h3>
<p>In Indonesian: &quot;Barang apa yang perlu dicek?&quot;</p>
<p>Sample answer: &quot;You&#39;re down to 6 liters of UHT milk and 1.2 kg of palm sugar. Check them before the 11:00 rush.&quot;</p>
<p>Ingredient stock in Kazeer goes down automatically with each sale, but staff don&#39;t always record spills, spoiled stock, or waste. So go look at the shelf or the fridge yourself, then work out how many servings what&#39;s left will make.</p>
<p>Say one cup of Kopi Susu Aren uses 150 ml of milk. The 6 liters left (6,000 ml) make 40 cups (6,000 ÷ 150). Count the other drinks that use the same milk too. If you usually go through more than 6 liters of milk a day, buy more today. To set a minimum stock level, see the guide to <a href="https://kazeer.ai/en/blog/daily-ingredient-stock-check/">ingredient stock</a>.</p>
<h3 id="what-are-my-priorities-today">&quot;What are my priorities today?&quot;</h3>
<p>In Indonesian: &quot;Apa prioritas saya hari ini?&quot;</p>
<p>In Kazeer&#39;s example, this one gets a short numbered list, like this:</p>
<ol>
<li>Restock UHT milk and palm sugar before 11:00.</li>
<li>Promote Croissant Butter, since its sales fell yesterday.</li>
<li>Schedule extra staff. Your busy hours are 11:00 to 13:00.</li>
</ol>
<p>Treat the list as a starting point. Some things may not be in your business records, like a catering order that just came in by phone, or heavy rain since early morning. Adjust the order to fit, then work through it one item at a time.</p>
<h2 id="yesterdays-sales-and-business-advice">Yesterday&#39;s sales and business advice</h2>
<p>Both are most useful first thing in the morning, while there&#39;s still time to buy ingredients or sort out staff.</p>
<h3 id="yesterdays-sales">Yesterday&#39;s sales</h3>
<p>Ask, for example, &quot;How were sales yesterday?&quot; (in Indonesian, &quot;Gimana penjualan kemarin?&quot;). A sample answer:</p>
<ul role="list">
<li>Sales: Rp4,250,000</li>
<li>Transactions: 186</li>
<li>Top seller: Kopi Susu Aren</li>
</ul>
<p>From sales and transactions, you can work out the average per transaction: Rp4,250,000 ÷ 186 = Rp22,849 (rounded). For more on reading these numbers, including how to compare them with the same day last week, see <a href="https://kazeer.ai/en/blog/daily-sales-report/">how to read your daily sales report</a>.</p>
<h3 id="business-advice">Business advice</h3>
<p>A sample piece of advice: &quot;Your busy hours are 11:00 to 13:00. Get your stock ready and promote your signature items.&quot;</p>
<p>So before 11:00, before the line starts to build, have these ready: ingredients for your signature items, staff on the POS and in the kitchen, and the promo your cashiers will offer.</p>
<p>Advice is most useful when you try it and then judge the result. Say you try a promo from 15:00 to 17:00. Decide up front how many days it will run, then compare drink sales in those hours with the same hours the week before. If the promo is a discount, set the promo price in Kazeer&#39;s promo feature, and make sure each cup still earns enough. That tells you whether the promo is worth keeping.</p>
<h2 id="tips-for-answers-you-can-use">Tips for answers you can use</h2>
<h3 id="say-which-period-you-mean">Say which period you mean</h3>
<p>What sells best today and what sells best this week can be different. So include the period, for example &quot;What sells best this week?&quot; (&quot;Apa yang paling laku minggu ini?&quot;). When you read the answer, check the period it mentions too. The sample answers above say &quot;this week&quot; and &quot;as of 10:30.&quot;</p>
<h3 id="ask-one-thing-at-a-time">Ask one thing at a time</h3>
<p>A question like &quot;How much have I sold today, and which items should I check?&quot; works better as two questions. An answer about one thing is easier to read on a phone screen.</p>
<h3 id="open-the-report-before-a-big-decision">Open the report before a big decision</h3>
<p>Before you place a large ingredient order, change a menu price, drop an item from the menu, or add staff shifts, open the report too. One number from the chat is easier to judge next to the others. Higher sales, for example, only mean more profit if gross profit goes up too.</p>
<p><a href="https://kazeer.ai/en/#reports">Kazeer&#39;s reports</a> show sales, COGS, gross profit, net profit after the operating costs you record, and tax. If you have more than one outlet, there&#39;s one report for all of them.</p>
<h2 id="plans-that-include-the-kazeer-ai-chatbot">Plans that include the Kazeer AI chatbot</h2>
<p>All three Kazeer plans list the Kazeer AI chatbot. Here&#39;s a summary from the plan list on Kazeer&#39;s site:</p>
<div class="md-table" role="region" tabindex="0" aria-label="Plans that include the Kazeer AI chatbot (table, scrollable)"><table><thead><tr><th scope="col">Plan</th><th scope="col">Price per outlet</th><th scope="col">Kazeer AI chatbot</th></tr></thead><tbody><tr><td>Free plan</td><td>Rp0, forever</td><td>Listed</td></tr><tr><td>Standard Monthly</td><td>Rp250,000 per month</td><td>Listed</td></tr><tr><td>Standard Annual</td><td>Rp2,000,000 per year</td><td>Listed</td></tr></tbody></table></div>
<p>The Free plan has no subscription fee, but there&#39;s a Rp500 platform fee per transaction, paid by the customer, and an initial deposit of Rp50,000. The platform fee is deducted from that deposit balance, so the balance doesn&#39;t go negative. Neither Standard plan has a platform fee, and both include staff training. Standard Annual also lists a free tablet stand. All three plans include access to every feature for owner, cashier, kitchen staff, and table order, online payment with dynamic QRIS, and customer support (WhatsApp 24/7, answered by the team daily from 09:00 to 21:00 WIB).</p>
<p>The <a href="https://kazeer.ai/en/blog/kazeer-plans-free-or-standard/">guide to choosing a plan</a> compares all three, and the details are in the <a href="https://kazeer.ai/en/#pricing">pricing section</a>.</p>
<h2 id="a-short-morning-routine">A short morning routine</h2>
<p>Try this order for one week, before you open:</p>
<ol>
<li>Ask about yesterday&#39;s sales: sales, transactions, and top seller.</li>
<li>Work out the average per transaction, then compare it with the same day last week.</li>
<li>Ask which items need checking, then go look at the shelves and the fridge yourself.</li>
<li>Ask for today&#39;s priorities, then adjust the list for what only you know.</li>
<li>Ask for business advice, then get ingredients and staff ready before the rush.</li>
</ol>
<p>After the rush, ask how much you&#39;ve sold today. Write down the number and the time, so next week you can compare at the same time.</p>
<p>At the end of the week, think back: which questions most often got you to act right away? Put those at the top of your routine.</p>
]]></content:encoded>
      <category>Artificial Intelligence</category>
      <dc:creator>The Kazeer team</dc:creator>
      <pubDate>Mon, 12 Oct 2026 00:00:00 GMT</pubDate>
      <enclosure url="https://kazeer.ai/img/blog/tanya-kazeer-ai-og.jpg" length="86031" type="image/jpeg" />
    </item>
    <item>
      <title>How to choose a Kazeer plan: Free, Standard Monthly, or Annual</title>
      <link>https://kazeer.ai/en/blog/kazeer-plans-free-or-standard/</link>
      <guid isPermaLink="true">https://kazeer.ai/en/blog/kazeer-plans-free-or-standard/</guid>
      <description>All three Kazeer plans include the same roles and dynamic QRIS. The main difference is cost: a platform fee your customers pay, or a subscription you pay yourself.</description>
      <content:encoded><![CDATA[<p>Kazeer has three plans: the Free plan, Standard Monthly, and Standard Annual. All three give you access for owner, cashier, kitchen staff, and table order, plus dynamic QRIS payments. The main difference is cost: a platform fee your customers pay, or a subscription you pay yourself, monthly or yearly.</p>
<p>This article helps you choose with a few questions and some simple math. Every transaction count and customer bill below is only an example. Swap in the numbers from your own sales records.</p>
<h2 id="the-three-plans-side-by-side">The three plans side by side</h2>
<div class="md-table" role="region" tabindex="0" aria-label="The three plans side by side (table, scrollable)"><table><thead><tr><td></td><th scope="col">Free plan</th><th scope="col">Standard Monthly</th><th scope="col">Standard Annual</th></tr></thead><tbody><tr><th scope="row">Subscription</th><td>Rp0 forever</td><td>Rp250,000 per month</td><td>Rp2,000,000 per year</td></tr><tr><th scope="row">Platform fee</th><td>Rp500 per transaction, paid by the customer</td><td>No platform fee</td><td>No platform fee</td></tr><tr><th scope="row">Extras listed</th><td>Inventory and the Kazeer AI chatbot</td><td>Inventory and the Kazeer AI chatbot</td><td>Inventory, the Kazeer AI chatbot, and a free tablet stand</td></tr><tr><th scope="row">Staff training</th><td>Not included</td><td>Included</td><td>Included</td></tr></tbody></table></div>
<p>Plan prices are per outlet. The more outlets you have, the bigger the discount, so for several outlets, ask the Kazeer team for the price.</p>
<p>The Free plan also has a Rp50,000 initial deposit. It&#39;s a balance the platform fee is deducted from, so the balance doesn&#39;t go negative.</p>
<p>What every plan includes:</p>
<ul role="list">
<li>Every feature for owner, cashier, kitchen staff, and table order.</li>
<li>Online payments with dynamic QRIS.</li>
<li>Customer support: WhatsApp 24/7, answered by the team daily from 09:00 to 21:00 WIB.</li>
</ul>
<p>So that access comes with any plan, and the choice is mostly about cost. You can also see each plan in detail in the <a href="https://kazeer.ai/en/#pricing">pricing section</a>.</p>
<h2 id="who-pays-the-platform-fee">Who pays the platform fee</h2>
<p>On the Free plan, you pay no subscription. There is a Rp500 platform fee per transaction, paid by the customer. Neither Standard plan has a platform fee. You pay the subscription yourself, monthly or yearly.</p>
<p>So the first question: would you rather your customers pay Rp500 on every transaction, or pay a fixed subscription yourself?</p>
<p>Rp500 feels different depending on how much a customer spends. For someone who only buys a Rp5,000 glass of es teh (sweet iced tea), Rp500 is a tenth of the price of the drink. For a family with a Rp150,000 bill, it&#39;s less than 1%.</p>
<p>The easiest way to judge it is to look at the average value of one transaction at your outlet: a day&#39;s sales divided by that day&#39;s transactions.</p>
<div class="md-note" role="note" data-kind="example"><p><strong>Example:</strong> Yesterday you made Rp4,250,000 in sales from 186 transactions. The average is Rp4,250,000 ÷ 186 = Rp22,849 (rounded). A Rp500 platform fee is a little over 2% of what the average customer spends.</p>
</div>
<p>The <a href="https://kazeer.ai/en/blog/daily-sales-report/">guide to daily sales reports</a> shows how to read this average. Then think about your regulars: would they mind paying an extra Rp500 every time they buy? You know them best.</p>
<h2 id="count-your-transactions">Count your transactions</h2>
<p>The second question: how many transactions does your outlet have in a month? With that number, you can see how much your customers pay in platform fees in a month, then compare it with the cost of Standard Monthly.</p>
<p>The basic math: Rp250,000 ÷ Rp500 = 500. A month of Standard Monthly costs the same as the platform fee on 500 transactions. Because plan prices are per outlet, if you have more than one outlet, do this math for each outlet using the per-outlet price the Kazeer team gives you.</p>
<p>The table below assumes your outlet is open 25 days a month.</p>
<div class="md-table" role="region" tabindex="0" aria-label="Count your transactions (table, scrollable)"><table><thead><tr><th scope="col" style="text-align:right">Transactions per day</th><th scope="col" style="text-align:right">Transactions per month</th><th scope="col" style="text-align:right">Platform fees your customers pay on the Free plan</th><th scope="col" style="text-align:right">Standard Monthly cost per transaction</th></tr></thead><tbody><tr><td style="text-align:right">10</td><td style="text-align:right">250</td><td style="text-align:right">Rp125,000</td><td style="text-align:right">Rp1,000</td></tr><tr><td style="text-align:right">20</td><td style="text-align:right">500</td><td style="text-align:right">Rp250,000</td><td style="text-align:right">Rp500</td></tr><tr><td style="text-align:right">40</td><td style="text-align:right">1,000</td><td style="text-align:right">Rp500,000</td><td style="text-align:right">Rp250</td></tr><tr><td style="text-align:right">80</td><td style="text-align:right">2,000</td><td style="text-align:right">Rp1,000,000</td><td style="text-align:right">Rp125</td></tr></tbody></table></div>
<p>How to read the first row: 10 transactions × 25 days = 250 transactions. On the Free plan, your customers pay 250 × Rp500 = Rp125,000 in platform fees that month. On Standard Monthly, you pay Rp250,000, or Rp250,000 ÷ 250 = Rp1,000 per transaction.</p>
<p>Below 500 transactions a month, Standard Monthly means you pay more than Rp500 per transaction. Above 500, your cost per transaction is less than the platform fee your customers pay on the Free plan, and it keeps shrinking as your transactions go up.</p>
<p>The 500 mark isn&#39;t a line that forces you to switch plans. On the Free plan, the platform fee is still paid by your customers, not by you. The math shows what it would cost you to spare your customers that Rp500.</p>
<h2 id="monthly-or-annual-check-your-cash-flow">Monthly or annual: check your cash flow</h2>
<p>If you&#39;d rather have no platform fee, the next question is whether to pay every month or once a year.</p>
<div class="md-table" role="region" tabindex="0" aria-label="Monthly or annual: check your cash flow (table, scrollable)"><table><thead><tr><td></td><th scope="col">Standard Monthly</th><th scope="col">Standard Annual</th></tr></thead><tbody><tr><th scope="row">Price</th><td>Rp250,000 per month</td><td>Rp2,000,000 per year</td></tr><tr><th scope="row">Total for 12 months</th><td>12 × Rp250,000 = Rp3,000,000</td><td>Rp2,000,000</td></tr><tr><th scope="row">Extras listed</th><td>Inventory and the Kazeer AI chatbot</td><td>Inventory, the Kazeer AI chatbot, and a free tablet stand</td></tr></tbody></table></div>
<p>Over 12 months, Standard Annual costs Rp1,000,000 less. Another way to see it: Rp2,000,000 ÷ Rp250,000 = 8, so a year of Standard Annual costs the same as 8 months of Standard Monthly. If your cashier works on a tablet, the free tablet stand comes in handy too.</p>
<p>Before you choose Standard Annual, answer these two questions:</p>
<ol>
<li>Can you set aside Rp2,000,000 at once without cutting into the money for ingredients, wages, and rent that month? Compared with Standard Monthly, Standard Annual needs Rp1,750,000 more in the first month (Rp2,000,000 minus Rp250,000).</li>
<li>Do you plan to use Kazeer for the full year? The Rp1,000,000 saving assumes 12 months of use.</li>
</ol>
<p>If you stop before the year is up, the rest of the period isn&#39;t refunded, but your access runs to the end of the period, and the tablet stand stays yours. The rules for changing plans are at the end of this article.</p>
<h2 id="do-you-need-the-kazeer-ai-chatbot">Do you need the Kazeer AI chatbot?</h2>
<p>The Kazeer AI chatbot is an assistant that helps you make sense of your business records. You ask in everyday language, on the web or in WhatsApp, such as &quot;What sells best?&quot;, &quot;How much have I sold today?&quot;, or &quot;Which items should I check?&quot; You&#39;ll find more sample questions in the <a href="https://kazeer.ai/en/blog/ask-kazeer-ai/">article on asking Kazeer AI</a>.</p>
<p>In the plan feature lists, the Kazeer AI chatbot appears on all three plans: the Free plan, Standard Monthly, and Standard Annual. So if the chatbot matters to you, any plan will do. Your choice still comes down mostly to cost: who pays the platform fee, and whether you pay monthly or yearly.</p>
<p>Inventory is also listed on all three plans, so neither feature is what sets them apart.</p>
<h2 id="match-a-plan-to-your-situation">Match a plan to your situation</h2>
<div class="md-table" role="region" tabindex="0" aria-label="Match a plan to your situation (table, scrollable)"><table><thead><tr><th scope="col">If this sounds like you</th><th scope="col">Plan to look at first</th></tr></thead><tbody><tr><td>You don&#39;t want to pay a subscription, and your customers don&#39;t mind Rp500 per transaction</td><td>Free plan</td></tr><tr><td>You don&#39;t want your customers paying a platform fee, and you&#39;d rather pay monthly</td><td>Standard Monthly</td></tr><tr><td>You want no platform fee, can set aside Rp2,000,000 at once, and plan to use Kazeer for a year</td><td>Standard Annual</td></tr><tr><td>You need staff training</td><td>Standard Monthly or Standard Annual</td></tr></tbody></table></div>
<p>If you&#39;re still torn between the Free plan and a Standard plan, go back to your transaction count and your regulars. If you&#39;re torn between Monthly and Annual, go back to your cash flow.</p>
<h2 id="changing-plans-and-stopping">Changing plans and stopping</h2>
<p>You can change plans later. The rules:</p>
<ul role="list">
<li>An upgrade, say from the Free plan to a Standard plan or from Standard Monthly to Standard Annual, applies right away. The unused value of the current period is taken off the new plan&#39;s price.</li>
<li>A downgrade, say from Standard Annual to Standard Monthly or to the Free plan, applies at the end of the period.</li>
<li>What&#39;s left of your Free plan deposit stays yours when you change plans.</li>
<li>Stopping means not renewing. The period you&#39;ve paid for isn&#39;t refunded, but your access runs to its end.</li>
</ul>
<p>One thing to ask the Kazeer team directly before you pay: how the platform fee shows up on the customer&#39;s bill and receipt.</p>
<p>Also tell them which devices and printer you already have. Kazeer runs on phones, tablets, and computers, and the Kazeer team can help you work out what devices you need. You can bring all of these questions to a <a href="https://kazeer.ai/en/#get-started">demo or a chat with the Kazeer team</a>.</p>
]]></content:encoded>
      <category>Money</category>
      <dc:creator>The Kazeer team</dc:creator>
      <pubDate>Mon, 12 Oct 2026 00:00:00 GMT</pubDate>
      <enclosure url="https://kazeer.ai/img/blog/paket-gratis-atau-standar-og.jpg" length="76850" type="image/jpeg" />
    </item>
  </channel>
</rss>
