Payments and Billing FAQ
Where do I find invoices?
There are two different types of invoices in the Zooza context:
Client invoices — invoices generated for your clients (for their bookings): Go to Sales & Payments → Invoices. You can filter by date, search by client, and download individual invoices or the full batch as a ZIP.
Zooza subscription invoices — invoices for your own Zooza subscription (what you pay Zooza): Click your name (bottom left on desktop, top right on mobile) → Subscription, then scroll past the list of plans to Manage subscription at the bottom. That button opens the external billing portal, which is where the invoices are.
The page itself shows only plans, so people conclude the invoices are not there. They are — but behind the button underneath the plan tiles, not on the page. See Where do I find my Zooza subscription invoice?
A client asks for a payment link — what do I send?
For a booking, the payment link is the link to the client's profile. There is no separate one-off payment URL per instalment. The client opens their profile, sees what is outstanding and pays there — and the same link keeps working for the next instalment, so you are not issuing a new one every month.
The dynamic tag is *|WIDGET_PROFILE_URL|*. Drop it into any
email or message template and each recipient gets their own.
It signs the holder in. The link carries a token, so anyone who opens it is inside that client's profile. Send it to the client, not into a group chat, and do not paste one client's link into a template as fixed text — use the tag, which fills in the right link per recipient.
Products are the exception. A gift voucher or entry pass sold on its own has its own checkout link, copied from the product itself — see Share a course or class registration link.
"Send them an invoice" — do you mean the document, or the money?
Worth separating, because the same sentence covers two different jobs and only one of them involves an invoice.
| What you actually want | What to do |
|---|---|
| The client should pay what they owe | Send a message with the profile link — see above. Or let the automatic payment reminders do it: Automatic payment reminders. |
| The client needs the document, for their records or their employer | Generate or resend the invoice — below. |
On an outstanding booking it is nearly always the first. People say "send them an invoice" meaning "tell them they owe us and make it easy to pay", and an invoice PDF on its own does neither particularly well: it is a record of a charge, not a prompt, and it carries no link to pay.
How do I resend an invoice to a client?
When you generate an invoice, it is automatically emailed to the client. If you need to resend it (for example, after making a correction):
- Open the booking.
- Click the pencil icon next to the invoice.
- Check Send invoice to client via email.
- Save.
The updated invoice is sent to the client's email address on record.
How do I export payments or refunds to Excel?
Go to Sales & Payments → Transactions → Export. The export includes received payments.
To export refunds specifically, use the same section and apply the refund filter before exporting. The export reflects whatever is currently visible in the list — so filter first, then export.
How do I download all invoices at once?
Go to Sales & Payments → Invoices. Apply any filters you need (date range, etc.), then click Download all. This downloads all filtered invoices as a single ZIP file.
For bulk XML export or API-based access, use the Zooza API (GET /v1/customer_invoices and GET /v1/customer_invoices/download). Contact support or see the developer documentation for details.
What does a negative balance mean on a booking?
In Zooza, the balance shows what the client still owes (positive) or what they have overpaid (negative).
- Positive balance (e.g. €50) — the client owes money. The outstanding amount has not been paid.
- 0 — fully paid.
- Negative balance (e.g. −€30) — the client has credit. They paid more than they owed, or a refund or manual credit was applied. You may owe them a refund, or the credit can be left on the account to offset future invoices.
Important: A negative balance means the client has credit, not that they owe money. This is the opposite of what many people intuitively assume. If you see −€30, the client is €30 ahead, not €30 in arrears.
The figure is not always shown with a sign. In some places the amount appears bare, so an overpayment looks identical to a debt. Before chasing a client for a number you do not recognise, open the bookings behind it — an unexplained total is often two bookings that were paid twice over, not money owed. A dance school saw "1,300 Kč" on a class overview, searched for unpaid bookings and found one for 325 Kč; the 1,300 was two bookings that had overpaid.
Balance figures are being relabelled with a state word — Overpaid, Outstanding or No debt — precisely so that the direction no longer depends on reading a sign. Where you see the word, trust it over the sign. The booking detail is always the authority; list and tile figures are recalculated in the background and can lag it by minutes to half an hour.
The booking shows more debt than this month's fee — why?
Because the next instalment already exists. A scheduled payment is created a set number of days before its due date — by default 15 — and is added to the booking's balance the moment it is created, not on the due day.
Example: a membership of €71 a month with a €25 registration fee in the first month. On 16 September the booking shows €167 outstanding: September's €96 (still unpaid) plus October's €71, which is due on 1 October and was therefore created on 16 September.
The number of days is the "days due" value in Settings → Billing & Payments → Payment settings; leaving it at 0 keeps the 15-day default. Shorten it if you would rather parents not see next month's instalment so early — bearing in mind that the "upcoming payment" and "payment created" notifications count from the same creation date (see Automatic payment reminders).
Can I make payment compulsory at booking — set the grace period to 0?
You can set the grace period to 0 (Settings → Billing & Payments → Payment settings, the first field; also per programme under Price and Payment), and you probably should if you do not want an "Awaiting payment" window. But be clear about what it does and does not do.
What it does: a booking with an outstanding balance is marked Unpaid straight away instead of sitting in Awaiting payment.
What it does not do: it does not force anyone to pay. The booking is still created. Card payment happens after the booking exists — that is the order of events everywhere online — so a parent who closes the tab, has no card to hand, or whose card is declined still leaves you a booking with nothing paid. Nothing cancels it automatically unless you switch on auto-cancel of unpaid bookings, and most providers would rather talk to the parent first.
For a subscription this matters more than it looks. The card is only stored once the client has made the first payment themselves, so until they do, there is nothing to charge and no future instalment can be collected. In Stripe those bookings show as incomplete. The fix is to get that first payment made: send them to their client profile (the WIDGET_PROFILE_URL tag makes a personal link), and make paying as easy as possible — having Apple Pay and Google Pay switched on in Integrations → Stripe measurably helps.
Why a payment is scheduled weeks before it is due
Each instalment has three dates, not one, and the plan preview now shows all three:
| Date | What it is | Where it comes from |
|---|---|---|
| Advance notice | The "upcoming payment" email, before anything is billed | The due date, minus the days-to-pay, minus your advance-notice days. Can be switched off. |
| Payment created | The debt appears on the booking and the client is asked to pay. On direct debit the collection starts here. | The due date minus Days before booking is marked unpaid |
| Due date | When you expect the money on your account | The template's Day of the month when the payment is due |
The due date is the one you choose. The creation date is worked out backwards from it, which is why a payment due on 6 October appears as created on 21 September: the days-to-pay field was 15. On a booking's payment plan the two sit in their own columns, Scheduled for and Due date, so you can read the gap directly. That field is in Settings → Billing & Payments → Payment settings (the guided inbound-payment setup writes the same field), and left at 0 it behaves as 15.
To get a specific pair of dates
This is the question we get most often, usually phrased as "I want the request to go out at the start of the month and the money in by the 15th". Two fields, and they work together:
- On the payment template, set
Day of the month when the payment is dueto 15. - In Settings → Billing & Payments → Payment settings, set
Days before booking is marked unpaidto 15.
The payment is then created on the 31st or 1st and is due on the 15th. Want the request on the 1st and payment by the 10th? Due day 10, days-to-pay 10. The gap between the two dates is the days-to-pay number — there is no separate field for it.
One caveat before you shorten it. The same number governs the Awaiting payment grace window, so a short gap means bookings flip to Unpaid sooner. And on direct debit the gap is the buffer GoCardless needs to collect and confirm before the due date — somewhere between 5 and 10 days is comfortable. Payments still work below that; more of them just confirm after the due date and look overdue in the meantime.
To stop a payment, the creation date is the one that matters, not the due date. Once it has passed and the payment has gone to the provider, it is on its way. A client who cancels a week before it can be stopped cleanly.
Changing the number affects new instalments only. Instalments already sitting in a plan keep the dates they were given. To move those, see the next question.
An existing client's plan shows different dates from the template preview
This is normal and it is not a fault in either one. The preview shows what the template would do today; a plan that is already running kept the dates it was given when it was created.
The usual case: the first row of an old plan was raised the moment the client registered, with a due date 15 days later — so it reads something like created 27 October, due 11 November, Processed while your template now says 1st and 15th. Registrations made before you settled the template keep that original schedule.
To put a whole class onto the current template:
- Open the class detail → Apply payment templates.
- Set the date of the first instalment. For
Total amountchoose Current class price, and set the registration fee to 0. - Click Continue, choose the template, and check the preview — confirm the number of instalments and the first and last dates are what you expect.
- Tick the clients who should get this template and click Run.
The original debt, including that first stray row, is cancelled and replaced by the new instalments. Do it before the next billing date, or you will have raised the old plan's payment first.
Clients on a different template — a sibling discount, say — have to be run separately, with their own template. Select them in their own pass rather than mixing them into the same run.
Can I put a credit on a client's account for them to use later?
There is no account balance to top up. A client does not hold money with you in Zooza; money is always attached to a booking. So there is nothing to credit in the general sense, and the ad-hoc scheduled payment will not do it — that field takes a negative amount only, which is a charge.
What people mean when they ask usually falls into one of three things, and each has its own route:
| You want to | Do this |
|---|---|
| Take something off what they owe now | Correct the payment on the booking, or reduce the scheduled payment. See Payment correction vs refund. |
| Give them something to spend on future sessions | Sell or grant a prepaid credit — a money-based pass they draw down per session. See Creating entry passes. |
| Knock an amount off their next booking | A discount code, or a loyalty rule if it should apply by itself. See Discount codes. |
The middle one is the closest thing to "credit on the account", and it is the right answer when a family has overpaid or you owe them sessions rather than money.
Can I split one payment between two bookings?
Not in halves. A received payment can be moved to another booking, but only as a whole. When a parent pays for two children with one transfer against one child's variable symbol:
- Open the booking that received the payment, find the transaction in the payments list and choose Edit payment (correction). Set the correction to the amount that belongs to the other child — half, if they split it evenly. The first booking now shows only its own share.
- Open the second child's booking and Add payment for the other half, with a note saying where the money actually arrived.
Do not use Refund for this — nothing is being returned. See Payment correction vs refund.
A client clicks "pay" and is asked to book all over again
The parent has an unpaid balance, goes to settle it, and lands on a booking form instead of a payment. Two different things cause this and they need different fixes.
You sent them the booking link. A booking page is for new registrations. An existing parent opening it does not get their outstanding balance — they get a fresh booking, and now you have two. Always send a parent with something to pay to their client portal, not to a class booking page. The portal recognises them, lists the bookings they already have and takes them to what is owed. The WIDGET_PROFILE_URL tag puts a personal link to it straight into an email.
Or the portal address configured for your widget is wrong. If the parent reached the portal by themselves and the pay button there still throws them into a booking form, the profile URL stored in your widget settings is pointing at the wrong page. It is set under Team & Settings → Publish on the widget. If you cannot see what is wrong with it, send support the registration where it happened — this is a configuration fault, not something the parent is doing.
Dedicated booking pages for individual programmes keep working alongside the portal; they are for marketing and for new customers, and nothing needs changing about them.
What is the difference between "Awaiting payment" and "Unpaid"?
Both statuses mean the client owes money, but they indicate different urgency:
- Awaiting payment — the client has an outstanding balance and is still within the allowed payment window. The deadline has not passed. This is a normal, expected state for a booking that was just created.
- Unpaid — the payment window has closed. The balance is overdue.
The length of the grace window is set in Settings → Billing & Payments → Payment settings under Days before booking is marked unpaid (Slovak: Počet dní pre vystavenie splátky). If this is set to 20, every new booking with a balance enters Awaiting payment for 20 days from registration, then automatically becomes Unpaid.
The default value is 0, and 0 does not mean the same thing everywhere — this is the single most common source of confusion about this field:
| Where it applies | What 0 does |
|---|---|
| The Awaiting payment window on a booking | No grace window. A booking with a balance goes straight to Unpaid. |
| When a scheduled payment is raised ahead of its due date | Treated as 15 days, not as "no gap". See Why a payment is scheduled weeks before it is due. |
| The due date written on an invoice | The invoice is due immediately. |
So a provider who sets the field to 0 expecting instalments to be raised on the day they fall due still sees them appear a fortnight early. Put an actual number in to change that.
Why are my bookings showing "Awaiting payment" when they used to show "Unpaid" immediately?
If you have a non-zero value in Settings → Billing & Payments → Payment settings → Days before booking is marked unpaid, your bookings will now enter Awaiting payment for that number of days before becoming Unpaid.
Before May 2026, this setting only affected bookings with a payment schedule (instalments). From May 2026, it applies to all bookings with an outstanding balance.
If you want bookings to go straight to Unpaid (the original behaviour), set the field to 0.
What is the "tolerance period" (or grace period) for payments?
The tolerance period is the same as the "Awaiting payment" window described above. The field controlling it is called Days before booking is marked unpaid in Settings → Billing & Payments → Payment settings.
Two important clarifications:
- It is a grace window, not a due-date shift. Setting 14 days means a booking stays in "Awaiting payment" for 14 days before Zooza marks it as overdue ("Unpaid"). It does not change the scheduled due dates on a payment plan — those are set independently per instalment.
- It does not postpone instalment collection. If a client has a payment plan with a fixed due date, that due date is unaffected by the tolerance period setting. The tolerance period only controls when the status changes from "Awaiting payment" to "Unpaid".
Since 7 September 2026 it also sets the due date on your invoices. That is new: the setting used to govern booking status and nothing else, while each invoicing engine invented its own due date — Faktury Online applied its own 14 days, Fakturoid, Xero, ABRA Flexi and Oblio used 30, SuperFaktura and SmartBill used the issue date, and Zooza's own invoices had none at all. Nine engines, five different answers, none of them the number you had typed into the setting.
They all read it now. If your invoices have been going out with a due date you did not choose, this is where it came from, and this is where you change it.
Instalment due dates on a payment plan are still set per instalment and are not affected.
Does "Awaiting payment" status automatically send reminder emails to clients?
No. The Awaiting payment status is for your internal tracking only — it does not trigger any emails.
To send email reminders to clients with outstanding balances, you must configure a Payment Reminder action on the programme under Programme → Settings → Price and payment → Payment Reminder Settings. Without this action, bookings will silently move from Awaiting payment to Unpaid when the deadline passes — no notification is sent.
See Automatic payment reminders for full setup instructions.