Can Otto make me an invoice? What he can write instead - and why asking burns so much

Modified on Tue, 4 Aug at 3:45 PM

You typed something small like "create the invoice for rewax. Owes $300" and instead of an invoice you got a run that would not end. The token counter climbs, the narration keeps flipping between Reading your files and Running a step, and then it stops on its own with no invoice written. One performer sent us both halves of it: "Just asking for invoice is using up tons of tokens", and then "Paused before creating invoice." Nothing you did caused that. Here is what Otto can and cannot do with invoices, why this particular ask spirals instead of failing cleanly, and two ways to have your invoice written in the next two minutes.

The short answer: can Otto make an invoice?

Not a real one. Three things are true at the same time, and together they explain everything you are seeing.

  • There is no built-in invoice capability. Otto has no invoice play, no invoice recipe, and no "make an invoice" button anywhere in the app.
  • He cannot create a real Stripe or PayPal invoice, at any setting. By design Otto never touches your money tools. On a payment connection, anything that creates, invoices, or opens a checkout is refused before it runs - at every autonomy position including Run it, and including Fully Autonomous Booking. There is no toggle that changes it. This is the same guard described in "Blocked": the draft and file blocks explained (Google redirect links, overwriting a file in your Booking HQ, and the rename that gets it done).
  • He can write an invoice as a document. A markdown or text file in your Booking HQ that you then send yourself is entirely fair game. What is missing is a template: no invoice format ships in the app yet, so he has nothing to copy.

Why the ask burns tokens instead of failing cleanly

Read this part even if you are in a hurry, because it is the difference between "I am doing something wrong" and "this is a known fault on our side".

When a request has a recipe to follow, Otto follows it and stops. "Create the invoice" has no recipe and no template, so nothing tells him the job is finished. On a busy workspace he does not fail - he goes looking. He keeps reading files, trying to work out what an invoice from you is supposed to look like instead of just writing the thing. That is why the narration stays on Reading your files and Running a step long after a short request should have been done.

We have seen this on a real desk. One performer's tightly scoped chat task, "create the invoice for rewax. Owes $300", passed roughly 524,000 weighted tokens and was still reading files. A focused ask like that should cost a few thousand. His own follow-up is what pinned the fault down: "It DID create the thank-you.md file early in the morning. Seems the problem is with creating the invoice." The thank-you note wrote fine, so the after-the-gig machinery was working. The invoice step on its own is what goes in circles. That is a real bug, it is escalated to engineering, and it is not something you can fix by rewording harder.

First, stop the run

  1. Look at the bar across the top of the app that shows what Otto is doing. The button on it reads Stop when it is a single job and Turn off when Autopilot is running. Press it.
  2. If the run has already paused itself and is offering Keep going, do not tap it. It is tempting to tap it two or three times hoping the next pass is the one that finishes. It is not. Each resume drops back into the same reading loop and spends more.
  3. Open that gig's own folder under leads/ before you do anything else. Otto saves work as he goes, so anything he already finished is sitting in there whether or not the run ever got around to reporting it.

You can see exactly what the run spent: click Advanced on the right of the top bar and open Token history. For the wider picture of what draws on your Claude plan, see Why the app uses more of your Claude plan than the terminal does - and what actually spends it.

Workaround 1: box the ask in so it cannot wander

Otto writes the invoice document without complaint once the request has an end to it. Ask him in this shape, swapping the path, the client, the date and the amount for your own gig:

Write an invoice as a new markdown file at leads/rewax-unwind-july25/invoice.md. Bill the Rewax and UnWine client for a 30-minute performance on July 25, amount due $300, using my business name and contact from my profile. Just write that one file. Do not read anything else first.

Four things in that wording are doing the work, and dropping any one of them lets the loop back in:

  • An explicit file path. He is not deciding where the file goes, so he does not go hunting for where it ought to go.
  • An explicit list of what to bill. Client, date, what was performed, amount due. Nothing left to research.
  • "Just write that one file." One deliverable, so the job has an obvious finish line.
  • "Do not read anything else first." This is the line that matters most. It short-circuits the reading loop directly.

Workaround 2: skip Otto and write it yourself

For a single gig this is genuinely faster than any prompt. Head a note or an email with the word INVOICE, then fill in this shape and send it:

From[your business name and contact]
Bill to[client name and email or address]
DateJuly 25, 2026
DescriptionPerformance - Rewax and UnWine (Jul 25)
Amount$300.00
Total due$300.00
Payment[your Venmo, PayPal or check details]

The dead end: connecting Stripe or PayPal does not unlock it

This is the first thing most people try, and it cannot work. Adding a payment connection, or opening Settings > Permissions and granting that connection more access, does not give Otto the ability to create an invoice. The block is policy, not permissions: create, invoice and checkout calls on a payment connection are refused whatever that tab says. Even the Stripe connection that Booked Solid does support is hard-locked to read-only plus draft approval. Skip that step and go straight to one of the two workarounds above.

So how do I invoice a client and actually get paid?

Two honest answers, depending on what you need.

A deposit link, inside Booked Solid. The Get set up group on the Plays tab has a Set up deposit links recipe, and Set up Stripe deposit links safely with a restricted key walks you through connecting Stripe with a key that can only do that one job. Otto drafts the link, you approve it, and your client pays Stripe directly. Be clear with yourself about what that is, though: a deposit link collects a payment. It is not an invoice. It carries no line items, no due date and no reminders.

Real invoicing, on KM Hub. If what you want is invoices that collect card payments, with payment schedules and automatic reminders, that lives in KM Hub and not here. Booked Solid OS runs on your computer and you stay hands-on. If you would rather have lead finding, follow-ups, email sending and invoicing handled for you on a hosted platform, take a look at KM Hub from the same team.

Where this stands

Not fixed at the time of writing. The looping invoice step is logged with engineering along with the token trail from the run that exposed it. Two things are planned: an invoice recipe and template, so that "create the invoice" finally has a bounded path to follow and a clear finish, and a confirmed ceiling on how far a single run can climb before it stops itself. We are not going to give you a date for it. Until it lands, the boxed-in wording in Workaround 1 is the reliable way to get the document out of Otto, and Workaround 2 is the reliable way to get it without him.

Still stuck?

If the boxed-in ask still loops, or any run keeps climbing on something that should be small, report it rather than absorbing it. Take a screenshot of the run and of its Token history entry, then email bookedsolid@kivimedia.freshdesk.com and a person will help.

Was this article helpful?

That’s Great!

Thank you for your feedback

Sorry! We couldn't be helpful

Thank you for your feedback

Let us know how can we improve this article!

Select at least one of the reasons
CAPTCHA verification is required.

Feedback sent

We appreciate your effort and will try to fix the article