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
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.
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 Exportproposal.create: Create and Duplicateproposal.update: Update, Restore, Mark accepted and Mark rejectedproposal.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.