From the price you offer to money in your account: the client picks from your packages, accepts, signs, and the invoice follows from what they signed.
How it fits together
The flow: you send a quote → the client picks their package and extras and clicks Accept quote → a contract carrying exactly what they accepted is created for them → they sign → a draft invoice for the same amount is created for you → you send it → they pay online or by transfer.
Link every quote to a lead. It files the documents on the job and gives the client one portal link where the quote, the contract and the invoice appear in turn.
All of this is part of Studio Manager. Team members see it if their role includes Inquiries (leads) — which means they see the money on every job.
STUDIO MANAGER → Quotes → Packages & products
The goal: Write your price list once, so every quote is assembled in a few clicks — and your package descriptions read the same, word for word, every time you send them.
What just happened: The entry is saved to your studio's catalogue. Nobody outside the studio sees it until it's on a quote you send. Changing or deleting an entry later never changes a quote you've already built — a quote keeps its own copy (the delete confirmation says so).
A lead's page → Documents → Quote → Create (or Quotes → New quote)
The goal: Put together one client's offer — the packages they can choose between, the extras they can add, and your terms — so they can choose and accept online instead of going back and forth by message.
What just happened: The quote is saved as a Draft, numbered like QUO-2026-004. A draft is never emailed or shown on the client portal. It's on your Quotes list and the lead's Documents, visible to you and team members with Inquiries (leads).
Quote → Line items → Opt, and the ⌄ on each line
The goal: Decide which lines are fixed and which are the client's choice, so they can take one package, add extras, change quantities or build their own — and watch the total change as they go.
What just happened: Your choices are saved on the quote. On the client's page every Opt line starts unticked: they pick a package card, tick products and change quantities, and the Quote summary and Total update as they go. Lines without Opt are always in.
Quote → Send
The goal: Get the quote to the client on a link they can open without logging in, and accept or decline.
What just happened: The status becomes Sent. Your client gets an email from “<your studio> via BokehFrames” (replies come to you) with the lines, the total and a Review & accept quote button. If the quote is linked to a lead, the button opens their client portal on the Quote tab — the same link will later hold the contract and invoice. Without a lead, it opens the quote on its own page.
The client's link (portal → Quote, or the quote's own page)
The goal: Know exactly what's on your client's screen, so you can talk them through it.
What just happened: Accept locks the quote with their picks and quantities, shows “Accepted — your agreement is ready to sign”, and creates the contract for them straight away (next how-tos). Decline marks it Declined; it can't be accepted after that. Either way the status changes on your Quotes list.
Quotes → click the quote
The goal: Fix a price, add an option after a call, or nudge a client — without starting over.
What just happened: Changes and status moves are saved on the quote and recorded on the job's activity. Accepted, Declined and Expired quotes are locked: every field, Save and Send are disabled.
Quote → ⋮ → Accept for client
The goal: Record a yes you got in person or on a call, so the contract and invoice follow without asking the client to click through.
What just happened: The quote is Accepted with the lines it has, the contract is created for the client to sign, and the job's activity records that you accepted on their behalf. With a lead, the contract is also waiting on the client's portal.
STUDIO MANAGER → Contracts (or the lead's Documents → Contract)
The goal: Turn the accepted quote into a signed agreement with exactly the packages and prices the client chose written into it.
What just happened: You're emailed “Signed: <contract title>”. The contract locks as Signed and keeps their name, the time and their IP address; they can save it as a PDF from their link. Signing creates the invoice — next how-to.
STUDIO MANAGER → Invoices (or View invoice on the accepted quote)
The goal: Bill exactly what was signed, without re-typing a line.
What just happened: Until you click Send the invoice is a Draft: not emailed and not on the client's portal. After Send the client gets a View & pay invoice email and the invoice appears on their portal's Invoice tab, with your payment options.
Worth knowing: Want an advance first? Change this invoice to the advance amount before you send it, and raise the balance later with Another invoice on the lead's Documents.
Settings → Payments (account owner only)
The goal: Enter your business details, tax and payment options once, so every quote and invoice carries them and clients can pay the way they prefer.
What just happened: Saved for the whole studio. Currency and tax apply to quotes and invoices you create from now on; your business details and payment options show on the documents your clients open. Only the account owner can open this tab.
A lead's page → Documents → Invoice → Create (or Invoices → New invoice)
The goal: Bill for an advance, a balance or extras — anything that didn't come from a signed contract — and get paid online or by transfer.
What just happened: Send emails the client a View & pay invoice link and marks it Sent; it appears on the lead's portal under Invoice. Before you send it, it's a Draft — not emailed, not on the portal — though ⋮ → View public already opens its page.
The client's invoice link (or portal → Invoice)
The goal: Know what the client's pay page offers, and when an invoice marks itself paid.
What just happened: A payment confirmed this way is added to the invoice by itself, and the status moves to Partial or Paid. Transfers, cash, and online payments where the client closed the page before coming back, you record yourself (next how-to).
Invoice → ⋮ → Record payment
The goal: Log cash, bank transfers and UPI so the invoice, the job's money and the client's receipt are right.
What just happened: The payment is added to Paid and Balance, the status becomes Partial or Paid, and the client is emailed a receipt — every recorded payment sends one. It also counts in the job's Money on the lead's page.
Invoices → click the invoice
The goal: Fix a mistake, or cancel an invoice while keeping a record of it.
What just happened: A void invoice stays on your list as a record, can no longer be paid and no longer counts as outstanding.
Overview → Money; Invoices; a lead's page → Money
The goal: See what's been paid, what's owed and what's late, studio-wide and per job.
What just happened: These are views; nothing changes. Different currencies are never added together.
Worth knowing: The totals at the top of the Invoices list are worked out from the invoices in the filter you're on: Outstanding includes drafts, and Collected this month counts payments on invoices created this month. For money actually owed and received, use Overview → Money.
STUDIO MANAGER → Contracts → Templates
The goal: Write your agreement once, so every contract — including the one created when a quote is accepted — starts from your own wording with the client's details filled in.
What just happened: Templates are private to your studio. Tags are filled in once, when a contract is made: {{amount}} is the lead's budget, {{event_date}} its event days or dates, {{photographer}} your studio name, {{date}} that day. Editing a template never changes contracts already made.
STUDIO MANAGER → Contracts → New contract
The goal: Get a signature when there's no quote — a reshoot, a second shooter, a usage agreement.
What just happened: Status Sent. The client signs on their link — Full legal name, an optional drawn signature and a confirmation tick — and you're emailed “Signed: <title>”. The signed contract is locked and kept on the job with the signer's name, time and IP address.
The total in the quote email is higher than what my client accepted.
The email and your Quotes list count every line you offered; the client's total counts what they picked. Once they accept, the quote's total is what they chose.
My client can't click Accept quote.
Nothing is picked yet. They need to tick a package or a product first.
My client accepted but can't find the contract.
A quote with no lead has no portal. Open the contract under Contracts and click Resend. For a job with a lead, send them Copy portal link from the lead's page.
Two packages are both counted in the total.
They aren't in the same Either/or group, or one doesn't have Opt on. Open each line's ⌄ and give them the same group name.
I changed a catalogue price but my quote didn't change.
Quotes keep their own copy of each line. Edit the line on the quote itself (while it's Draft or Sent).
My client accepted after the Valid until date.
That date is printed, not enforced. Void a quote you no longer stand behind.
My client accepted the wrong package.
An accepted quote can't be reopened. Void the contract (⋮ → Void contract) before it's signed, then send a new quote.
Where's the invoice for an accepted quote?
It's created when the client signs the contract, as a Draft. Open it under Invoices, check it and click Send.
Did the client get the contract?
Accepting shows them the contract on their portal straight away, but no email is sent. Click Resend on the contract to email it.
Every control on these screens, and what it does.
Every field on the quote, the contract and the invoice, the catalogue behind quotes, and the payment settings behind all three.
Your reusable price list. Adding an entry to a quote copies it, so changing a price here never rewrites a quote you've already built.
| Add package / Add product | A new row, named New package or New product, ready to fill in. |
| Package / Product | How it shows on the client's quote: a card with a cover and full description, or a row in the products table. |
| Name / price | What the client reads and pays. The price has no currency of its own — it's copied as the same number into the quote's currency. |
| Upload image / Replace | The cover on a package card. The link icon next to it pastes an image address instead. |
| Description | “What's included, the crew, the deliverables…” — line breaks are kept. |
| ♥ | Show a Recommended ribbon on the client's quote. |
| Eye-slash | Hide from the picker / Show in the picker. A hidden entry stays in the catalogue, greyed out. |
| Save | Saves that row only. |
| Bin | Deletes the entry. Quotes that already include it keep their own copy. |
Sections on a quote: Quote for · Line items · Notes · Totals.
| Linked lead (files this quote on the client's record and gives it a portal) | The job it belongs to. Picking a lead fills Client name and Client email if they're empty. Not linked to a lead leaves it standalone, with no portal. |
| Client name / Client email | Who it's for. Send emails Client email. |
| Issue date / Valid until | Printed on the quote. Valid until isn't enforced — void a quote to stop it being accepted. |
| Quote currency | Per quote, starting at Default currency in Settings → Payments. |
| Item name · quantity · price | One line each; the amount is quantity × price. |
| Package (card) / Product | How the client sees the line: a card with its cover and full description, or a row in the products table. |
| Opt | Makes the line the client's choice — they tick it on or off. Without it the line is always included. |
| ⌄ (More options) | Card title, Cover image, Full description (shown on the card, and on the signed contract), Either/or group, Recommended and Client can change quantity. |
| Either/or group | Lines sharing a group name are mutually exclusive: ticking one unticks the others. Catalogue packages arrive in the group package. |
| Client can change quantity | The client may set 1 to 999 of this line. |
| Add product / Add package / Add from catalogue | An empty line, or a copy of an entry from Packages & products. |
| Notes | “Scope, terms, what's included, etc.” — rich text shown at the top of the client's quote. |
| Discount / GST (%) / Subtotal / Tax / Total | Computed as you type. Discount is an amount. The Total counts every line you offer (the first of each either/or group) until the client chooses. Not GST-registered (Settings → Payments)? GST is replaced by a note and no tax is charged. |
| Save / Send | Send saves, then emails the client a Review & accept quote link — the portal when the quote has a lead. With no email it offers Mark sent. Send again re-emails it. |
| ⋮ View public | The client's page for this quote. It works for drafts too. |
| ⋮ Accept for client | For a yes on the phone: accepts the quote as it stands — every line, optional ones included — and creates the contract. |
| ⋮ Delete / Void | Delete removes a draft for good. Void stops a sent quote being accepted; it then shows as Expired. |
| Status | Draft · Sent · Accepted · Declined · Expired. Accepted, Declined and Expired quotes are locked. |
| View invoice | Shown on an accepted quote once the signed contract has created its invoice. |
Worth knowing: Accepting a quote doesn't create an invoice. It creates the contract; the client's signature creates a draft invoice, which you send.
Sections: Bill to · Line items · Totals · Payments · Notes.
| Linked lead (files this invoice on the client's record) | The job it belongs to. |
| Client name / Client email | Who owes it. Send emails Client email. |
| Client address / Client GSTIN / Place of supply | For GST invoices to businesses in India. Place of supply decides CGST + SGST or IGST. |
| Issue date / Due date | The due date starts 14 days out. |
| Invoice currency | Per invoice. |
| Line items / Add line / Discount / GST (%) / Subtotal / Total | The arithmetic, live. |
| Paid / Balance | What has come in and what is still out. |
| Send | Emails a View & pay invoice link and marks it Sent. With no client email it offers Mark sent. |
| ⋮ Record payment | Opens Record a payment: Amount or Percent (of the total), Method, and a Reference (optional) — “Txn id / cheque no.” — then Record. Every recorded payment emails the client a receipt. |
| ⋮ Payment link | Razorpay only: creates and copies a Razorpay link for the balance. |
| ⋮ View public / Void | The client's invoice page; cancel without erasing it (can't be undone). |
| Status | Draft → Sent → Partial → Paid, plus Void. |
Worth knowing: Outstanding and Collected this month on the Invoices list are worked out from the invoices in the current filter — Outstanding includes drafts, and Collected this month counts payments on invoices created this month. Overview → Money leaves drafts out and shows Overdue.
Account owner only.
| Studio identity | Business name, GSTIN and contact details printed on quotes, contracts and invoices. |
| Default currency (used for new invoices) | New quotes start with it too. |
| My studio is GST-registered / I'm under the composition scheme | India. Unregistered or composition studios charge no GST. |
| Your state (from your GSTIN — decides CGST+SGST vs IGST) | Compared with the client's place of supply. |
| Default GST rate % / Invoice series prefix / My prices include GST | Defaults for new invoices. The prefix numbers GST invoices like WT/25-26/001. |
| Online payments | Razorpay, Stripe and PayPal, each connected to your own account on its own page (Set up → / Connected). An online payment is recorded on the invoice when the client returns to it after paying. |
| Manual transfer details | UPI ID and Bank details, shown to the client under Pay by transfer. These you reconcile yourself with Record payment. |
Worth knowing: We take no commission and never hold your money. The payment provider's own fees apply to online payments.
| Template / Blank contract | Start from one of your templates, or from nothing. |
| Link to a lead (optional, prefills client + details) / No lead | Set only when you create it. Without a lead there's no client email to send to. |
| Create & edit | Makes the draft and opens it. |
| Title / Agreement | The name, and the wording, editable until it's signed. |
| Send / Resend | Emails the signing link — the portal's Contract tab for a job with a lead. |
| Mark as sent | Offered when there's no client email: records it as sent without emailing. |
| ⋮ View public page / Void contract / Delete | The client's signing page; cancel it for good; delete a draft. |
| Status | Draft · Sent · Signed · Void. |
Worth knowing: A contract made by accepting a quote is created already Sent, with a table of what was accepted above the terms — but it isn't emailed. Signing records the signer's name, time and IP address, emails you “Signed: …” and, when the contract carries a deal, creates a draft invoice.
| Add template | A new template. Three starters — Wedding Photography Agreement, Portrait Session Agreement, Event Coverage Agreement — are created the first time you open Templates. |
| Title / Body | The template's name and wording. |
| Merge tags | {{client_name}} {{event_date}} {{event_type}} {{event_location}} {{amount}} {{photographer}} {{date}} — filled in once, when a contract is made. |
Worth knowing: When a quote is accepted, its contract uses the template whose title matches the job's event type, else your first template.
Tell us the screen you're on and what you expected to happen — that's usually enough for us to spot it straight away.
Contact support →