Vezmo App

Sales

Proposals

A proposal is a priced offer you send to one of your clients. They open it from an emailed link, with no account needed, and accept or reject it.

How a proposal moves

Create proposal → create contract → send proposal → your client accepts or rejects → an invoice is created on accept, except for HOURLY proposals.

Charge types are FIXED (default), HOURLY, CUSTOM and RECURRING. Statuses run DRAFT → SENT → ACCEPTED or REJECTED; PENDING and ARCHIVE are there for your own tracking.

Good to know

Your key decides the owner

A proposal is filed under the business and user your API key belongs to. Lists and lookups show that user's proposals, including ones made in the dashboard.

Your client answers

Your client accepts or rejects from the emailed link. If they answered you outside Vezmo (by phone or on paper), record it with Mark accepted or Mark rejected. Setting the status to ACCEPTED or REJECTED yourself is refused. Subscribe to the proposal.accepted and proposal.rejected webhooks to hear the answer.

Invoices on accept

Accepting starts a client project and creates an invoice for the proposal's amount, then emails it to your client. An HOURLY proposal's amount is a rate, so it creates no invoice. They are of the proposal's mode: a test key's proposal starts a sandbox project and invoice.

Test mode

A proposal takes the mode of the API key that made it. A test key's proposal is a sandbox one: it is emailed only to addresses on your team (in test mode, emails go only to your team's addresses), marked TEST MODE with [TEST] in the subject; your client and CC addresses outside your team are skipped. Your client sees a Test mode badge, and accepting it raises a sandbox project and invoice paid with test cards. A key sees only its own mode's proposals: the other mode's answer 404, and for one your business has in the other mode the message says so (No such proposal: a similar object exists in live mode, …). Proposals you make in the dashboard are live, and a copy keeps its source's mode.

Edit drafts, archive the rest

Only a draft or a rejected proposal can be edited, and only a draft can be deleted (to trash; Restore proposal brings it back). A sent or answered proposal is archived instead.

Client links

The email holds a signed link that works for 24 hours; send the proposal again for a fresh one. Addresses in the contract's ccEmail get a view-only link that works for 14 days.

Your client's link and portal show only proposals you sent (SENT, PENDING, ACCEPTED, REJECTED), not deleted, with a contract that isn't deleted. Drafts, archived and deleted proposals are never shown, and only a SENT or PENDING proposal can be accepted or rejected. Archiving an accepted proposal hides it from your client too.

Permissions

Each route needs these scopes on your API key (Mark accepted needs both proposal.update and proposal.send):

  • proposal.read: List, Get, View and Export
  • proposal.create: Create and Duplicate
  • proposal.update: Update, Restore, Mark accepted and Mark rejected
  • proposal.send: Send, and Mark accepted (it emails your client the invoice)
  • proposal.delete: Delete

Emailing your client needs proposal.send. Keys that could create or update proposals when this scope was added were given it, and a new key gets every proposal scope. A read-only key gets 403 “Insufficient API permissions” on Send.