Quotes
Quotes lets your team build, send, and track sales quotes without leaving graph8. Pull line items from your Stripe catalog, attach contract terms, send for signature, and watch the quote progress from draft to accepted in real time.
Quote Lifecycle
Every quote moves through a sequence of statuses:
| Status | Meaning |
|---|---|
| Draft | Being authored, not yet sent to the prospect |
| Sent | Delivered to the signer’s email |
| Viewed | Signer has opened the quote at least once |
| Accepted | Signer has signed and accepted the quote |
| Declined | Signer rejected the quote |
| Expired | Quote passed its valid_until date without being accepted |
Status transitions are automatic: graph8 updates them as the prospect interacts with the quote.
Two extra badges show where a quote is waiting on the buyer:
| Badge | Meaning |
|---|---|
| Forwarded | The buyer handed the signature to a colleague, who has not signed yet |
| Signed, awaiting payment | The quote is signed and the first invoice is not paid yet |
Creating a Quote
The quote builder walks you through five steps: Deal & buyer, Products & pricing, Payment & terms, Signature and Review & send. A live preview on the right updates as you type, and you can Save as draft at any step.
- Go to Revenue → Quotes and click New quote (or open a deal and click New Quote on its Quotes tab)
- Deal & buyer: pick the deal. Recent deals show first, and if only one deal is open it is picked for you. The buyer (signer), title and company details fill in from the deal
- Products & pricing: add line items (see below)
- Payment & terms: check payment terms, contract dates, payment methods and installments
- Signature: confirm who signs and who gets a copy
- Review & send: check exactly what the buyer receives, then Save & send or Save & generate link
graph8 fills in as much as it can for you:
| Field | Default |
|---|---|
| Signer | The deal’s contact |
| Title | Generated from the company and month |
| Valid until | Your quote settings, else 30 days |
| Payment terms | The template, else your settings, else Net 30 |
| Contract term | 12 months as soon as any line is recurring |
| Billing start | The contract start date |
| Billing contact | The signer (see below) |
The Needs your input box at the top only lists what is still missing for this quote.
Separate billing contact
By default the person who signs is also the person who gets the invoice, so you do not need to fill in any billing contact or billing email.
If invoices should go to someone else (for example finance or accounts payable), tick Separate billing contact in the Deal & buyer step. The billing contact picker and billing email appear so you can choose that person.
- The box starts ticked when the deal already has a contact with the billing role, or when you edit a quote whose billing contact is not the signer
- Unticking it never deletes what you typed. It just goes back to using the signer
- Company legal name and address stay visible when your quote settings require them
Line Items
Line items are the products and services on the quote. Each line pulls from your Stripe catalog or can be a custom one-off.
| Field | Description |
|---|---|
| Product | Pulled from your Stripe catalog (or custom name for one-offs) |
| Description | Optional free-text description shown to the signer |
| Quantity | Number of units |
| Unit amount | Price per unit (in cents internally; entered as currency) |
| Discount % | Per-line discount applied before tax |
| Billing frequency | Monthly, annual, one-time, or custom |
| Line total | Auto-calculated: quantity × unit_amount × (1 - discount_pct) |
The quote preview and PDF show your configured company logo and, when available, the linked customer company’s stored logo under Prepared for. If no customer logo is stored, the company name still appears.
Choose when billing starts
For each recurring service, use Billing starts to choose At contract start, After 1 month, After 2 months, or a later month. To choose a calendar date instead, select On a specific date and fill in the date picker. The contract start date should match the agreed kickoff date.
For example, After 2 months on a January 31 contract starts March 31. A specific March 15 start renews on that service’s own anniversary. Dates must fall within the contract. One-time charges remain at contract start.
Save and reopen the draft to review each choice. Preview and PDF show a payment schedule, including intervening renewals through the last service start. Usage or performance fees remain additional where specified. The collection-mode notice identifies Stripe versus manual billing; saving a draft starts neither. Stripe-backed quotes cannot be issued with dates outside Stripe’s supported 730-day scheduling window.
Adding a Line Item from Stripe
- Click Add Line Item → From Stripe
- Search by product name
- Pick a price tier (Stripe products can have multiple price points)
- Set quantity and any per-line discount
- Click Add
The Stripe product name, price, and billing frequency are pre-filled. You can override description and discount per line.
Custom Line Items
For services, one-off implementations, or anything not in Stripe:
- Click Add Line Item → Custom
- Enter product name, description, unit amount, and quantity
- Set billing frequency manually
Custom line items don’t sync back to Stripe. They’re local to the quote.
Quote Totals
The quote totals row shows:
| Total | Calculation |
|---|---|
| Subtotal | Sum of all line totals |
| Discount | Cumulative discounts applied |
| Tax | Tax amount (per your org tax settings) |
| Total | Subtotal − Discount + Tax |
All amounts respect the quote’s selected currency.
Payment Installments
Split the quote total into several payments in Payment & terms → Payment installments.
- Click Add installment
- Enter a percentage or an amount, plus a milestone label (for example “On signature”)
- Watch the balance line: it shows Remaining $X or Over by $X
- Click Auto-balance to put the remainder on the last row so the schedule adds up exactly
The schedule must add up to the quote total to the cent before you can send.
Discount Approval
Quotes with a discount above your limit (default 15%) or a margin below your minimum (default 5%) need approval before the buyer receives them.
- The Review & send step tells you why before you send, for example “Discount 22% is above your 15% limit. This goes to Owner/Admin for approval.”
- The send button reads Request approval. The buyer gets nothing until the quote is approved
- The quote shows “Waiting on an approver for 2 hours” while it waits
- Once approved, click Send now on the quote to send it in one step
- If it is rejected, the reason shows on the quote. Edit it and click Resubmit for approval
Changing price, quantity or discount after approval clears the approval, so the new numbers are checked again.
Contract Terms
Beyond line items, quotes capture contract terms that govern the sale.
Standard Terms
| Field | Purpose |
|---|---|
| Payment terms | When payment is due (e.g., “Net 30”, “Upon receipt”) |
| Contract months | Length of the contract in months |
| Contract start date | When the contract begins |
| Contract end date | When the contract ends |
| Accepted payment methods | Which payment methods the signer can use |
| Marketing rights | Whether you can use the customer in case studies, logos, press |
Terms Templates
Save reusable term sets in Settings → Quotes → Terms so you don’t re-type them on every quote. Pick a template when creating a quote and the standard fields auto-populate.
Custom Terms and Privacy Content
| Field | What It Holds |
|---|---|
| Terms content | Full contract terms, typically a long-form legal block |
| Privacy content | Privacy and data-handling clauses |
| Notes | Internal notes (not visible to the signer) |
| Public notes | Notes that appear on the signer-facing quote page |
Use a rich text or HTML format. The quote renderer escapes appropriately for safe display.
Quote Templates
Reusable quote skeletons let you spin up consistent quotes quickly.
- Go to Settings → Quotes → Templates
- Click New Template
- Build it like a regular quote: terms, line items, payment terms
- Save the template
When creating a quote, pick a template and all fields pre-populate. You can then customize per-prospect.
Template Documents
Templates can include attached documents (e.g., NDAs, MSAs):
| Doc Type | Common Use |
|---|---|
| NDA | Mutual non-disclosure |
| MSA | Master service agreement |
| Other | Any custom attachment |
Attached documents are included in the signature envelope alongside the quote.
Sending a Quote
- Open a draft quote
- Check the Email tab: it shows the exact email the buyer will get, marked Preview, not sent yet
- Click Send
- Confirm the signer’s email
- Optionally customize the email body
- Click Send Now
graph8 generates a public token and viewer token for the quote, then emails the signer a link. The status flips to Sent. When the signer opens the link, status flips to Viewed. When they sign, status flips to Accepted.
What the Signer Sees
The signer-facing page shows:
- Your company name, logo, and brand colors
- All line items with descriptions and totals
- Contract terms (the public ones; internal notes are hidden)
- Accepted payment methods
- A signature pad for accepting
Signers do not need a graph8 account. The public link is sufficient.
Forwarding to another signer
If the person who received the quote is not the one who should sign, they can hand it over without contacting you.
- On the signing page, the buyer clicks Someone else needs to sign
- They enter the colleague’s email, and optionally a name and a note
- If the email is not on the company’s domain, an amber warning asks them to confirm. It never blocks the forward
- A confirm step reminds them “You will no longer be able to sign this quote”
- The colleague gets their own signing link by email
What happens next:
- The colleague replaces the original signer. The original link stops working and shows “This quote was forwarded to …” with your contact details
- The colleague is added as a contact on the company and the deal
- You get a notification, and the quote timeline shows Forwarded for signature, with an External domain badge when it went outside the company domain
- The quote shows the Forwarded badge until the colleague signs
- No approval from you is needed
Paying after signing
When the quote is signed, the buyer sees:
- Pay $X due now: opens the invoice so they can pay straight away. With installments, this is the first payment
- Send to finance/AP: sends the payment step to someone else (see below)
- Download signed copy: the signed PDF
If your billing system does not take online payment, the page says the invoice will be emailed instead. Payment states are shown clearly: pending, didn’t go through (with Try again), and paid.
Sending payment to finance
- After signing, the buyer clicks Send to finance/AP and enters the finance contact’s email
- The finance contact gets a pay-only link: they see the amount, the quote and Pay, but no signing controls or signer details
- They become the quote’s billing contact and a billing contact on the deal
- The quote timeline shows Payment sent to finance
E-Signature
Accepted quotes flow through the e-signature workflow:
| Field Captured | Source |
|---|---|
| Signer name | Typed by the signer at signing |
| Signer IP | Auto-captured from the signing session |
| User agent | Auto-captured from the signing session |
| Accepted at | Timestamp of signature |
graph8 stores an envelope record with these audit fields. If your org uses a third-party e-sign provider (DocuSign, etc.), the envelope ID syncs back so you have a single source of truth.
PDF Generation
After acceptance, graph8 renders the signed quote as a PDF and stores it in S3. The pdf_s3_key is recorded on the quote record. Reps can download the signed PDF from the quote detail page.
Tracking Quote Activity
Every interaction with the quote logs to its activity timeline:
| Action | Logged As |
|---|---|
| Quote created | Actor: rep |
| Quote sent | Actor: rep, with email destination |
| Quote viewed | Actor: signer (anonymous), with IP + user agent |
| Quote accepted | Actor: signer, with signature metadata |
| Quote declined | Actor: signer, with optional reason |
| Quote expired | Actor: system, automatic on valid_until |
| Quote duplicated | Actor: rep, with source quote ID |
| Forwarded for signature | Actor: signer, with the new signer’s email and an external-domain flag |
| Payment sent to finance | Actor: signer, with the finance contact’s email |
The quote detail Overview also has a Signers and payers panel: the current signer, who forwarded to whom and when, and anyone who was sent the payment step.
The timeline is visible on every quote detail page.
Duplicating a Quote
To create a similar quote (e.g., a renewal or a tweaked version):
- Open the source quote
- Click Duplicate
- graph8 creates a draft copy with all line items, terms, and metadata
- Update any differences (signer, dates, line items)
- Save and send
Stripe Integration
When connected to Stripe (see Settings → Integrations):
- Quote line items can pull directly from your Stripe product catalog
- Signing a quote sets up billing automatically: the customer, any subscriptions and the first invoice
- Subscription line items create Stripe subscriptions on signing
Choose the billing system for quotes in Settings → Quotes → Settings.
Quote Settings
Org-wide quote behavior is configured at Settings → Quotes:
| Setting | What It Controls |
|---|---|
| Default currency | Currency used for new quotes |
| Default expiration | Days until a quote auto-expires (e.g., 30) |
| Default payment terms | Net 30, Net 60, etc. |
| Default tax rate | Applied to quotes unless overridden |
| Billing provider | Which billing system sets up the customer and invoice when a quote is signed |
| Approval limits | Maximum discount and minimum margin before a quote needs approval |
| Email branding | From name, From email, signature block |
Permissions
| Role | Capabilities |
|---|---|
| Admin | Create, edit, send, delete any quote; manage templates and settings |
| Member | Create, edit, send, delete their own quotes |
| Viewer | Read-only access to quotes |
Limits & gotchas
- Forwarding is limited to a few forwards per quote per day, to stop abuse of the email
- Only the signer can forward the signature. A finance contact can pay but cannot forward the payment link again
- A forwarded link cannot be used again. If the wrong address was typed, resend the quote from the quote page
- Editing a quote that was already sent takes it back to draft and sends a new link. Older links stop working
- Payment after signing needs a billing integration that supports online payment. Otherwise the buyer is told the invoice will be emailed
Troubleshooting
| Issue | Fix |
|---|---|
| Signer reports the quote link doesn’t work | Check that the quote isn’t expired or accepted; resend if needed |
| Stripe products don’t show in line items | Verify Stripe is connected at Settings → Integrations and the product list has refreshed |
| Tax amount looks wrong | Confirm the org’s tax rate is set correctly in Settings → Quotes |
| Quote stuck in “Sent”, signer says they got the email | The signer may not have clicked the link yet; status flips to “Viewed” only on click |
| Can’t delete a quote | Accepted quotes cannot be deleted (compliance / audit). Delete only Draft or Expired quotes |
| Signature didn’t capture name | Older browsers may not support the signature pad; ask the signer to re-open in Chrome/Safari |
| I can’t see Separate billing contact | It is in the Deal & buyer step, in the Billing contact card under Title. Tick it to choose the billing person; the picker lists contacts once a deal is picked |
| The buyer says their link says “forwarded” | They or a colleague handed the signature to someone else. The quote timeline shows who. Resend the quote if it went to the wrong person |
| Send says “Request approval” | The discount or margin is outside your policy. The reason is shown next to the button. An admin or the approver role must approve it |
| I can’t send because of installments | The schedule must add up to the total. Click Auto-balance |
| The buyer doesn’t see Pay now after signing | Online payment needs a connected billing system with card payments allowed. Otherwise the invoice is emailed |
| The forward email never arrived | The buyer is told on screen if delivery failed, and you get a notification. Resend from the quote page |
| Preview shows an error | Click Try again. If it keeps failing, refresh the page |
Related
- Products & Services → - Stripe catalog feeding quote line items
- Prospects → - Active deals where quotes attach
- Customers → - Where accepted-quote accounts land
- Pipeline Settings → - Stage probabilities used for forecasting
- Deal Contacts → - Contacts linked to a deal, including forwarded signers and billing contacts