VxCloud
Docs/Guides/SalesShift
🧾SalesShift

From a masked address to money in the bank

Six objects, one chain: pool person → contact → deal → quote → contract → invoice. Each step hands the next one a frozen snapshot, so a price cannot drift after someone has agreed to it.

35 minAdvancedSalesShiftQuotesE-signatureInvoicingStripe
Pick how you want to follow along

In the dashboard (UI)

This walks the whole chain in the SalesShift web app. Each stage is its own section in the sidebar — Leads, Contacts, Deals, Products, Quotes, Contracts, Invoices, Subscriptions — and each one hands the next a document rather than a live reference. That is what stops a signed price from changing underneath you.

1

Find the prospect and convert them

Leads → Pool. Filter down, then open a person. Their address is masked until you spend a reveal on it. Revealing does not make them mailable — converting does, because conversion is what creates a contact and writes the consent metadata. Convert from the pool in one action and it will save, reveal if needed, and convert.

  • Check the reveal meter first. The convert-from-pool result splits every id you passed into converted, already converted, skipped for no quota, skipped for no address, and skipped because the person was erased.
  • Read all five buckets, including the zeros. A screen that shows only the successes is hiding a partial spend.
2

Open a deal

Deals shows your pipelines and their stages; a default pipeline is created on first use if you have none. Create a deal against the contact and set an amount and stage. Everything downstream — the quote, the contract, the invoice — can carry this deal id, which is what ties the paperwork back to the pipeline.

Tip: The forecast view is a weighted sum: each deal's amount multiplied by its stage win probability. It moves when you move a deal between stages, so stage probabilities are worth setting honestly.
3

Put the things you sell in the catalogue

Products holds your catalogue: SKU, name, description, one-time or recurring, unit price in cents, currency, cost, tax rate, and — for recurring products — a billing interval and count, plus optional trial days. A recurring product without a billing interval is rejected, because a subscription with no period is not a thing.

  • Prices are integer cents, not floats. That is deliberate — money that round-trips through a float eventually disagrees with itself.
  • Deleting a product is a soft delete, so historic quotes and invoices keep their line references.
4

Build the quote

Quotes → new. Attach the deal, the contact and the company, pick a currency and a validity date, then add lines. A line can reference a catalogue product or be free-text; either way it carries quantity, unit price, an optional line discount, and a tax rate. There is also an order-level discount.

  • The line editor sends the whole grid and the server re-prices it. That is the contract on purpose: a failed call can never leave the document half-updated.
  • A quote gets a generated document number when it is created.
5

Run it through approval

Settings → Quotes holds the org-level numbering, tax and approval thresholds. Submitting a quote for approval either routes it to an approver or approves it outright when no rule is triggered. An approver can approve or decline the pending approval, and the decision is kept with the quote as history.

Tip: Sent, accepted and voided quotes are locked against edits, and an accepted quote cannot be voided. If the price is wrong after sending, issue a new quote rather than trying to reopen that one.
6

Send it — this is where the contract appears

Sending a quote does three things in one action: it freezes the quote into a contract document, emails it to the recipient, and hands it to the e-signature flow. The recipient gets a link addressed by a token; there is also a public read-only view of the quote itself at its own token.

7

Watch the signature come back

The public signing page records the first open per party as a viewed event in the audit trail. A submitted signature is row-locked, so two simultaneous submissions cannot both sign. A party can also decline, with a reason.

  • Contracts also accepts a document you already have — upload a PDF, DOCX, TXT, MD or HTML file and the content is extracted into an editable document that rides the same flow: edit, send, dual signatures, rendered PDF.
  • Re-sending chases only the party who still owes a signature, rather than mailing everyone again.
  • The executed PDF is rendered by the tenant node's Go e-sign engine: the document, the signature frames, a certificate of completion, and the audit trail. The sender gets their own copy of the same thing.
Tip: The audit trail behind the certificate is readable from your own dashboard — the same rows the certificate page prints. If someone disputes a signature later, that is what you reach for.
8

Invoice the accepted quote

Invoices → create from the accepted quote, which carries its lines across. A brand-new invoice starts as a draft and can be edited freely: header fields, bill-to details, PO number, payment terms, currency, notes, and the line grid — which follows the same bulk-replace contract as the quote editor.

9

Issue it

Issuing moves the invoice from draft to open. That stamps the issue date, derives the due date from the payment term, and freezes the bill-to snapshot. Freezing matters: if the customer changes their billing address next quarter, the invoice you already issued should not silently change with it.

10

Send it and get paid

Sending emails the invoice with the PDF attached, from your own mailbox, with optional CC, subject and message. From there payment goes one of two ways. Stripe: create a checkout session for the amount still outstanding. The customer pays, and the Stripe webhook — registered per payment integration — reconciles it back against the invoice. Manually: record a bank transfer, cheque or cash payment against the invoice. There is a public invoice page and a public PDF at a share token, so the customer never needs an account to see or pay it.

  • The checkout session is for the amount still outstanding, so a part-payment recorded manually is reflected in what Stripe asks for.
  • An invoice that was never paid can be voided. That is a cancellation, not a deletion — the record stays.
11

If it recurs, put it on the ledger

Subscriptions holds recurring revenue against a contact or company: create one, change the plan value, cancel immediately or at period end, reactivate a cancelled one. The MRR rollup is what the ledger exists for — it is the waterfall view of that revenue moving.

Stuck halfway through? Email [email protected] — most replies land within an hour during weekdays.

All guides

Was this page helpful?