Money

Taking payments

Your own Fonepay or Khalti account, so the money goes straight to you. We never hold it and we never take a cut of it.

You can ignore all of this

Cash works with nothing set up. Everything below is for taking money by QR at the counter, or asking for a deposit before a booking is confirmed. A salon that only takes cash loses no function except those two.

Adding your keys

Settings → Payments, owner only. Fonepay is what most businesses here use, and what a customer can pay with from any bank app; Khalti is offered as the alternative.

  1. Get the details from Fonepay

    A merchant code, a username, a password and a secret key. These are API credentials for third-party dynamic QR, which Fonepay issues separately — they are not always the same as the login you use for the Fonepay business app.

  2. Paste them in and save

    They are encrypted before they are stored, and never shown back to you or to us afterwards — only the last few characters, so you can tell one set from another.

  3. Read what the gateway said

    We ask Fonepay to check them as you save, and show you their answer either way. Keys that are refused are still saved, because a half-typed set you cannot come back to is worse than a wrong one you can fix.

  4. Turn it on

    Use live Fonepay and Offer Fonepay at the till. Until both are on, nothing changes for anybody.

Nobody at this company can read your keys once they are saved, which also means nobody can recover them for you. Keep your own copy wherever you keep your bank details.

Taking a payment by QR

On the till, Take payment → the QR method. A code appears on screen; the customer scans it with any bank or wallet app. The bill updates itself when the money lands — nobody needs to press anything, and nothing on that screen decides a payment succeeded. We ask the gateway, and only the gateway's answer counts.

If the customer walks out before it lands, the bill is still waiting for it. A sweeper checks unfinished payments every minute and settles them when they complete, so the money reaching you an hour later still reaches the right bill.

Deposits

Settings → Salon → Deposits. You choose who is asked: nobody, everybody, or only people with a no-show against them.

  • A booking that needs a deposit is pending, and its time is held while the customer pays.
  • Paying confirms it automatically, including when the money arrives after they have closed the page.
  • Not paying releases the time quietly. Nobody is messaged, because nothing was promised.
  • The deposit is carried onto the bill when they come in, so they are never charged for it twice.
There is deliberately no way for a customer to skip a deposit. A business that has turned them on has decided it wants the money first, and a way around that on the customer's own screen would make the setting a suggestion.

Selling packages and club places online

Both go through the same payment machinery — the same page, the same QR, the same sweeper. Nothing about paying for five haircuts is different from paying a deposit, and neither becomes usable until the money is in. See Offers, packages and the club.

When Fonepay refuses your keys

The commonest answer from Fonepay is INVALID USERNAME OR PASSWORD. That arrives before Fonepay looks at your merchant code or the signature, so it is about the username and password alone. Three things to check with Fonepay, in this order:

Are these the API credentials, or your app login?

Fonepay issues a separate username and password for third-party dynamic QR. The login for the business app is often not the same thing, and it fails exactly like this.

Is third-party dynamic QR enabled for the merchant?

It is a feature Fonepay turns on per merchant. Ask them to confirm it is on for your merchant code, not just that your account exists.

Is the merchant code the right length?

Fonepay's own specification allows up to 15 characters. If yours is 16, ask them which code the API expects — it may not be the one printed in the app.

None of these is something we can fix from here: the refusal comes from Fonepay's own server about your own account. Send them the exact message above and your merchant code and they will know what you mean.

Something here wrong, or missing? Tell us on the contact page — the handbook is fixed the same week.