# How to invoice customers and charge for post-booking add-ons

> Charge customers after a booking: add post-booking add-ons, then invoice the balance through Stripe (hosted, pay online), a manual PDF (bank transfer or cash), or Shopify. Step by step.

URL: https://opencals.com/blog/invoice-customers-after-booking
Author: Stanislav Tyshchenko
Published: 2026-06-25
Updated: 2026-09-05
Categories: industry-guide, use-case

The booking is rarely the final number. The client books a 60-minute session and stays for 90. The car rental adds a GPS at pickup. The consultation turns into a consultation plus a report. The money owed at the end of a job is often more than the money agreed at checkout — and collecting that difference is where a lot of service businesses get sloppy, chasing it over text or just eating it.

This guide covers the clean version: how to change a booking after it's been made, and how to invoice the balance through whichever channel fits — Stripe online, a manual PDF, or Shopify.

> **Key takeaway**
>
> Two things happen here, in order. First you update the order — add the add-ons or extras the customer actually took, which raises the amount due. Then you issue an invoice for that outstanding balance. The invoice goes out through a payment provider: Stripe (a hosted page the customer pays online), a manual PDF (bank transfer or cash), or Shopify (for Shopify-connected stores). Pick the channel once; the system handles numbering, delivery, and — for Stripe — marking it paid.

## Step 1: Add the post-booking charges

A booking becomes an order the moment it's made. That order is editable after checkout, which is what makes post-booking charging possible at all.

The cleanest way to add a charge is an **add-on** — an optional extra attached to the service. Add-ons aren't only a checkout upsell; you can attach them to an existing order when the work changes. A deep-conditioning treatment the stylist talked the client into, or an extra hour on a studio rental — either one becomes an add-on line on the order, with its own price and quantity.

> **Why add-ons rather than a loose charge**
>
> Adding the extra as a structured add-on line keeps the order honest: the line item, its price, and its quantity all show up on the invoice and in your reports. Staff can see exactly what was added and why, and the invoice math is automatic instead of a number someone typed into a text message.

Once the add-ons are on the order, the amount due goes up. If the customer already paid the original total at checkout via Stripe, the order now carries an outstanding balance equal to the extras. That balance is what you invoice.

### What if the booking shrank instead of grew?

If part of the booking was cancelled, those line items drop off — cancelled appointments are excluded from the billable total, and from any invoice you issue. Invoices only ever cover the real outstanding balance at the moment you issue them, so you can't accidentally bill for a slot the customer never took.

## Step 2: Set up your invoicing identity once

Before the first invoice goes out, set the details that appear on every invoice — you do this once.

1. **Business legal name**: The name that heads the invoice. This is your registered business name, not your storefront brand if they differ.
2. **Tax ID and registration number**: Your VAT/tax identifier and company registration number, where applicable, so the invoice is valid for the customer's books.
3. **Invoice prefix**: The prefix for sequential numbers, like INV-. Numbers are then allocated automatically and in order — INV-41, INV-42, INV-43 — with no gaps or duplicates.
4. **Payment terms**: Days until the invoice is due. Set 14 and every invoice's due date is calculated from its issue date automatically.
5. **Footer notes**: Any standing text — thank-you line, late-payment policy, remittance instructions — printed at the bottom of every invoice.

These are stored against your store, so every invoice you issue inherits them. You're not retyping your tax ID per invoice.

## Step 3: Pick the channel and issue the invoice

An invoice is delivered through a **payment provider**, and the provider you choose decides how the customer pays. There are three real options for most businesses (plus cash for in-person records).

| Channel                    | How the customer pays                                       | Best for                                                  |
| -------------------------- | ----------------------------------------------------------- | --------------------------------------------------------- |
| Stripe (hosted invoice)    | Clicks a link, pays by card online; invoice auto-marks paid | Anyone who wants to be paid online without chasing        |
| Manual PDF — bank transfer | Gets a PDF with your bank details, pays by transfer         | B2B clients and businesses that pay by invoice            |
| Manual PDF — cash          | Pays in person; PDF is the record                           | In-person settlement you still want documented            |
| Shopify                    | Pays through your connected Shopify store                   | Shopify-connected merchants keeping everything in Shopify |

### Stripe: get paid online, hands-off

If you have Stripe connected, issuing a Stripe invoice creates a native **hosted invoice** — a Stripe-branded page with a pay button. The customer gets the link by email, pays by card, and the invoice transitions to **paid** on its own through Stripe's webhook. You don't mark anything manually, and the payment is recorded back against the order so your revenue stays reconciled.

This is the default to reach for: the customer added an extra, you issue a Stripe invoice for the difference, they tap pay, done.

### Manual PDF: bank transfer or cash

For clients who pay by bank transfer — common in B2B — issue a **bank-transfer** invoice. The system renders a numbered PDF that includes your bank details (account name, bank, IBAN, SWIFT) so the customer knows exactly where to send the money, emails it to them, and stores it. A **cash** invoice works the same way without bank details, as a record of an in-person payment.

> **Set bank details first**
>
> A bank-transfer invoice will still issue if you haven't entered your bank details — but the PDF will simply omit the bank section, and the customer won't know where to pay. Configure the bank-transfer provider's details before sending the first one.

### Shopify: keep it in your store

If you're a Shopify-connected merchant, issue the invoice through the **Shopify** channel and it's created against the matching Shopify order, so billing lives where the rest of your store's money does.

## What happens after you hit issue

Issuing is asynchronous, and understanding the states saves confusion:

1. **Draft**: The invoice is created instantly with a snapshot of the order, customer, and line items, gets its sequential number and due date, and is queued for delivery. The snapshot is frozen — later edits to the order won't change an invoice you've already sent.
2. **Sent**: Delivery succeeded: the PDF was emailed (manual), or the Stripe/Shopify hosted invoice was created and the link sent.
3. **Paid**: Stripe only, and automatic. When the customer pays the hosted invoice, a webhook marks it paid and records the transaction against the order.
4. **Failed → resend**: If delivery fails — a bad email, a transient error — the invoice is marked failed with a reason, and a single resend re-queues it.

Because the invoice is built from an immutable snapshot, it always reflects what was owed at the moment you issued it. Add more add-ons next week and you issue a second invoice for the new balance; the first one stays exactly as the customer received it.

**Invoicing in Opencals**

Opencals turns every booking into an editable order, so you can add post-booking add-ons and then invoice the balance through Stripe (hosted, pays online, auto-reconciled), a manual numbered PDF for bank transfer or cash, or Shopify for connected merchants. Invoice numbering, due dates, PDF rendering, and Stripe payment reconciliation are handled for you. See orders, payments, and add-ons in the feature pages below.

- [Orders & Payments](https://opencals.com/features/orders-payments): Every booking becomes an order with payment tracking, refunds, and invoicing.
- [Add-ons](https://opencals.com/features/add-ons): Attach extras to a booking — at checkout or after — as structured, billable line items.
- [Shopify integration](https://opencals.com/features/shopify-integration): Issue invoices through your connected Shopify store and keep billing in one place.

## Frequently asked questions

### Can I charge a customer more after the booking is made?

Yes. The booking becomes an editable order. Add the extras the customer actually took as add-on line items, which raises the amount due, then issue an invoice for the outstanding balance.

### What's the best way to collect a post-booking balance?

If you want to be paid online with no chasing, issue a Stripe hosted invoice — the customer pays by card via a link and it auto-marks paid. For B2B clients who pay by transfer, use a bank-transfer PDF invoice. For in-person settlement, use cash; for Shopify merchants, the Shopify channel.

### Do I have to mark Stripe invoices as paid myself?

No. Stripe-hosted invoices reconcile automatically — when the customer pays, a webhook marks the invoice paid and records the transaction against the order. Manual channels (bank transfer, cash) you confirm yourself.

### What goes on a bank-transfer invoice?

A numbered PDF with your business identity, the line items, the amount due, your payment terms, and your bank details (account name, bank, IBAN, SWIFT) so the customer knows where to pay. Set the bank-transfer provider's details first, or the PDF omits that section.

### Can Shopify merchants send invoices?

Yes. If your store is connected to Shopify, you can issue invoices through the Shopify channel, created against the matching Shopify order, so billing stays inside your store.

### What happens to an invoice if the booking changes later?

Nothing — each invoice is built from an immutable snapshot of the order at issue time. If the booking changes afterward, the existing invoice stays as sent, and you issue a new invoice for any new balance. Cancelled appointments are always excluded from the billable total.

### Are invoice numbers sequential?

Yes. Numbers use your chosen prefix plus an incrementing counter (INV-41, INV-42, ...), allocated under a lock so concurrent invoices can't get duplicate numbers.
