{{businessName}}
Sign in to manage your orders
Email
Password
Confirm password
{{authButtonLabel}}
{{authToggleLabel}}
{{authError}}
Owner access only
You're offline — changes will sync once reconnected
Cloud sync is blocked (permission denied) — check Firestore rules. Your changes are only saved on this device for now.
‹
{{headerTitle}}
{{headerSubtitle}}
+
{{recipeCount}}
Recipes
{{unpaidTotalDisplay}}
Unpaid
{{clientCount}}
Clients
+ New Invoice
+ Ingredient
+ Client
Recent invoices
{{rinv.clientName}}
{{rinv.date}}
{{rinv.totalDisplay}}
{{rinv.status}}
Export all data (JSON backup)
Scan a receipt
Scan barcode
{{ing.name}}
{{ing.costDisplay}} / {{ing.unit}}
−
{{ing.qtyDisplay}}
+
Packaging
+ Add packaging
{{pkg.name}}
{{pkg.costDisplay}} / {{pkg.unit}}
−
{{pkg.qtyDisplay}}
+
Treats & recipes
+ Add treat
{{treat.name}}
{{treat.priceDisplay}}
cost {{treat.costDisplay}} · margin {{treat.marginDisplay}}
{{chip}}
{{inv.clientName}}
#{{inv.number}} · {{inv.date}} · {{inv.itemCount}} item(s)
{{inv.totalDisplay}}
{{inv.status}}
Client
{{chip.name}}
Add from treats
{{tc.label}}
+ Custom item
×
qty
price
{{item.lineTotal}}
Order details
Event date
Occasion
Pickup or delivery
Pickup
Delivery
Payment method
Zelle
Cash
Card
Notes
Card processing fee
Waive-able rate:
%
Subtotal
{{draftSubtotalDisplay}}
CC fee
{{draftFeeDisplay}}
Total
{{draftTotalDisplay}}
Save invoice
{{invoiceDetail.clientName}}
{{invoiceDetail.date}}
{{invoiceDetail.status}}
Order details
{{invoiceDetail.occasion}}
{{invoiceDetail.deliveryMethod}} · {{invoiceDetail.deliveryLocation}}
Event date: {{invoiceDetail.eventDate}}
Payment: {{invoiceDetail.paymentMethodLabel}}
{{it.qty}}× {{it.name}}
{{it.lineTotal}}
Subtotal
{{invoiceDetail.subtotalDisplay}}
CC fee ({{invoiceDetail.ccFeePercent}}%)
{{invoiceDetail.feeDisplay}}
Total
{{invoiceDetail.totalDisplay}}
Mark as sent
Mark as paid
Share PDF
On the PDF footer
Logo + scan-to-follow QR print on every invoice
Delete invoice
{{cl.initial}}
{{cl.name}}
{{cl.phone}}
{{cl.spentDisplay}}
{{clientDetail.initial}}
{{clientDetail.name}}
{{clientDetail.spentDisplay}} lifetime
Edit
Phone
{{clientDetail.phone}}
Email
{{clientDetail.email}}
Address
{{clientDetail.address}}
Notes
{{clientDetail.notes}}
Order history
{{ord.date}}
{{ord.status}}
{{ord.totalDisplay}}
‹
{{finYear}}
›
{{finRevenueDisplay}}
Revenue
{{finSpendingDisplay}}
Spending
{{finProfitDisplay}}
Profit
Export {{finYear}} tax summary (CSV)
Ingredient spending
{{exp.name}}
{{exp.date}} · {{exp.qty}} {{exp.unit}}
{{exp.totalDisplay}}
No spending logged for {{finYear}} yet — costs are logged automatically when you add ingredient stock.
Home
Stock
Invoices
Clients
Finances
{{sheetTitle}}
Ingredient
Packaging
Name
Unit you use in recipes
What did you pay?
e.g. eggs $3.99 for a dozen — enter 3.99 and 12
Pack cost ($)
÷
{{packSizeLabel}}
= {{computedUnitCostDisplay}} per {{unitOrPlaceholder}}
Quantity currently in stock
Save ingredient
Delete ingredient
{{sheetTitle}}
Name
Phone
Email
Address
Notes (allergies, preferences…)
Save client
Delete client
{{sheetTitle}}
Name
Sale price (per unit)
Yield (units this recipe makes)
Labor time (minutes, whole batch)
Your hourly rate
Ingredients used (total for this batch/recipe)
{{row.name}}
({{row.unit}})
Packaging used (per this recipe/batch)
{{row.name}}
({{row.unit}})
Ingredient cost (batch)
{{treatFormIngCostDisplay}}
Packaging cost (batch)
{{treatFormPkgCostDisplay}}
Labor cost (batch)
{{treatFormLaborCostDisplay}}
Cost per unit
{{treatFormUnitCostDisplay}}
Profit per unit
{{treatFormMarginDisplay}}
Save treat
Delete treat
Scan barcode
{{barcodeError}}
No camera, or can't scan it? Enter the number instead:
Look up
Looking up product…
Scan receipt
Scan receipt
Reading receipt…
Found {{receiptItems.length}} items — uncheck any you don't want to add.
{{ri.name}}
{{ri.tagLabel}}
{{ri.unit}}
Add to stock
{{toastMsg}}