Obsidian Jet Docs

Collect the deposit and get paid

How the deposit invoice gets minted the moment a quote is accepted, the pay-link your customer uses, and the manual fallback for wire or check.

Winning a quote does not by itself collect any money — an invoice with a deposit pay-link has to exist first. Obsidian Jet mints that invoice automatically the moment a quote is accepted, on either accept path, and gives you a manual fallback for payments that happen off-platform.

1. The deposit invoice mints automatically on accept

However the customer says yes — clicking Accept on their emailed quote link, or an operator marking the quote WON after a phone call — the same deposit-minting step fires right after the acceptance is recorded. This is a recent parity fix: the operator-driven accept used to skip it and leave the booking with no deposit artifact until someone opened Invoicing and minted one by hand.

  1. Customer accepts their emailed link (public_quote_accept): the acceptance commits, then the deposit invoice mints, resolving the same deposit-terms/pct logic the quote's deposit schedule already carries.
  2. Operator marks the quote WON (POST /api/v1/quote/<id>/accept, the phone/in-person path): the SAME helper now fires right after the existing charter-agreement + booking-confirmation side effects, so this path mints the identical deposit invoice the public path always did — no more "operator has to remember to open Invoicing and mint it."
  3. Both paths share one helper, _mint_deposit_invoice_on_accept, so the deposit-terms resolution and pay-link behavior can't drift between them.

If your Stripe Connect account is not yet onboarded (or the SDK/key is unavailable), the invoice still mints — it just has no pay-link yet. The response carries deposit_pay_link_error instead of a URL, and the booking itself is never blocked on it.

Once the invoice has minted with a working pay-link, the customer's accept-confirmation page shows it directly — no separate email round-trip required to start paying.

  1. After accepting, the confirmation page shows a transparent deposit-now / balance summary next to a Pay deposit · $<amount> button.
  2. The link is a Stripe Checkout session created directly on the operator's connected account, itemizing the charter invoice as its own line (plus a disclosed card surcharge line item, when one applies) — never folded silently into the base price.
  3. If no link could be minted, the page says so honestly instead of hiding the deposit step: "Your operator will send deposit payment instructions shortly."

3. Recording an off-platform payment (wire, check, cash)

Not every deposit or balance arrives through the pay-link. When a customer wires funds or mails a check, record it manually against the invoice so the invoice's status and the pipeline's money chip both reflect reality.

  1. Open the invoice from Invoicing (or from the WON quote's money chip — see After the win) and find the record payment panel.
  2. Enter the amount, pick a method (wire, check, or another offline method your tenant supports), and optionally a reference and the date received.
  3. Submit. The payment posts to POST /api/v1/charter/invoices/<invoice_id>/payments, and the invoice's status (and the WON quote's money chip) updates immediately — no wait for a webhook that will never arrive for an off-platform payment.

A manually recorded payment is exactly that — a record of what your operation received, not a claim about regulatory or contractual compliance. Keep the reference field accurate; it is what reconciles this receipt against your bank statement later.

On this page

Collect the deposit and get paid — Obsidian Jet