Vezmo App

Sales · Contracts

Create contract

Adds the contract to one of your proposals; a proposal needs one before you can send it. Your client's signature is saved on the contract when they accept.

Authorization

Header

Body parameters

clientId string Required

ID of one of your clients, normally the proposal's client. Another ID returns 404.

proposalId string Required

ID of one of your proposals (404 otherwise). A proposal has one contract at most; a second returns 409.

title string Required

Contract title.

referenceNo string

Ignored here: Vezmo numbers each new contract, such as CTR-00000042. Change it with Update contract.

fileUrl string

URL of the contract file, such as a PDF.

startDate date

ISO 8601 date, such as 2026-11-01. When your client accepts, the project starts on it and the invoice is due 10 days later.

endDate date

ISO 8601 date. When your client accepts, it becomes the project's end date.

status enum

DRAFT | PENDING (default) | ACTIVE | COMPLETED | CANCELLED. For your records; Vezmo doesn't change it.

message string

Note kept with the contract.

paymentMethod string

How you expect to be paid, as text. Kept for your records.

paymentDue string

Payment terms as text, such as Net 15. Kept for your records.

isPartialPay boolean

true or false (default). Kept for your records; the invoice created on accept doesn't take part payments.

redirectUrl string

Where your client goes after accepting or rejecting the proposal. Without it, they go to the Vezmo website.

ccEmail string

Comma-separated email addresses, at most 10. When you send the proposal, each gets a view-only link. Each must be a real address; they are stored lower-cased, without repeats. Otherwise 400 'ccEmail: "…" is not an email address. Separate addresses with commas.' or 'ccEmail: copy in at most 10 addresses.'

expiryRule string

Note kept with the contract; nothing expires because of it.

metadata object

JSON object for your own fields.