SoftSolzSoftSolz
HomeAPI GuideAPI ReferenceWidget Tester

Send a quote and get its signing link

Send a draft, sent or viewed quote. A draft becomes sent. When the quote has no signers yet, its contact becomes the signer. Each signer who still has to sign gets a private link, and an email when the signer has an address and the workspace has a sending address set up. Sending again returns the same links. Takes no body. A quote that needs approval answers 409 approval_required until it is approved; a closed quote answers 409 quote_not_sendable; a draft whose valid until date is in the past answers 409 quote_expired. The reply lists each link in links and, in delivery and email_warning, whether the email went out. If it did not, give the link to the customer yourself.

POSThttps://app.softsolz.uk/api/v1/services/quotes/quotes/{quote_id}/send

Recent Requests

Kept only in this browser
TimeStatusTook
Send a request with Try it to see it here.

Path Params

quote_idstringrequired

Headers

Authorizationstringrequired

Bearer token: Bearer sk_live_... (or sk_test_... for sandbox). A login token will not work here.

Idempotency-Keystring

Optional idempotency key for safe retries.

Response

Response Body

idstringQuote id.
quote_numberstringQuote number shown to the customer, unique in the workspace.
titlestring | nullShort title of the quote.
contact_idstring | nullContact the quote is for.
contact_namestring | nullFull name of that contact.
contact_emailstring | nullEmail address of that contact.
company_idstring | nullCompany the quote is for.
company_namestring | nullName of that company.
deal_idstring | nullPipeline deal the quote belongs to.
statusstringWhere the quote is in its life.
currencystringThree-letter currency code, exactly as sent when the quote was created.
subtotal_centsintegerSum of the line totals in minor units, before discount and tax.
discount_centsintegerDiscount taken off the subtotal in minor units.
tax_centsintegerTax in minor units, worked out on the discounted amount.
total_centsintegerAmount the customer pays in minor units.
valid_untilstring | nullLast day the customer can accept the quote, as YYYY-MM-DD.
is_expiredbooleanTrue when the quote is still open (draft, sent or viewed) but its valid until date has passed.
notesstring | nullNotes shown to the customer.
termsstring | nullTerms and conditions shown to the customer.
requires_signaturebooleanWhether the customer must sign to accept.
sent_atstring | nullWhen the quote was first sent.
first_viewed_atstring | nullWhen the customer first opened the quote.
decided_atstring | nullWhen the customer accepted or declined.
declined_reasonstring | nullReason the customer gave when declining.
converted_invoice_idinteger | nullInvoice raised from this quote, once converted.
converted_invoice_numberstring | nullNumber of that invoice, once converted.
esign_modestringHow signing works: no signature, one signer, signers in turn, or all signers at once.
countersign_requiredbooleanWhether someone in your business must countersign after the customer. It is true whenever a signer from your business is on the quote. The quote stays open until that person has signed.
expires_atstring | nullWhen the quote expires automatically.
reminder_cadence_daysinteger | nullDays between automatic reminders, or null for none.
last_reminded_atstring | nullWhen the last reminder went out.
template_idstring | nullQuote template this quote was built from.
owner_user_idinteger | nullWorkspace member who owns the quote.
parent_quote_idstring | nullEarlier quote this one is a new version of.
converted_atstring | nullWhen the quote was converted.
converted_subscription_idstring | nullSubscription started from this quote, once converted.
deposit_centsintegerFixed deposit asked for on acceptance, in minor units.
deposit_percentnumberDeposit asked for on acceptance as a percentage of the total.
deposit_paid_atstring | nullWhen the deposit was paid.
approval_requiredbooleanWhether the quote must be approved inside your business before it is sent.
approved_atstring | nullWhen the quote was approved.
public_view_countintegerTimes the customer opened the quote.
total_view_secondsintegerTotal seconds the customer spent reading the quote.
owner_namestring | nullName of the workspace member who created the quote.
created_atstringWhen the quote was created.
updated_atstringWhen the quote last changed.
linesarray of objectsPriced lines, in order.
signatureobject | nullThe customer signature, once the quote is signed.
signersarray of objectsPeople asked to sign or copied in.
email_warningstring | nullWhy a signing email did not go out, or null when every email was sent. When it is set, give the signing links to the customer yourself.
public_tokenstring | nullSigning token of the first signer, the same one in the first link.
linksarray of objectsOne signing link per person who still has to sign.
deliveryarray of objectsWhether each signing email went out.

Request

curl --request POST \
--url https://app.softsolz.uk/api/v1/services/quotes/quotes/{quote_id}/send \
--header 'Authorization: Bearer sk_live_your_key'

Credentials

Sent as a Bearer token and used in the samples above and in Try it. Kept only in this browser tab until you close it. Use an sk_test_ key to stay in your sandbox.

Response · 200

{
"data": {
"id": "42",
"quote_number": "Q-0007",
"title": "Website redesign",
"contact_id": "7d3f2b1a-9c4e-4f6a-8b2d-1e5c7a9b0f12",
"contact_name": "Jane Doe",
"contact_email": "jane@example.com",
"company_id": null,
"company_name": null,
"deal_id": null,
"status": "sent",
"currency": "GBP",
"subtotal_cents": 150000,
"discount_cents": 10000,
"tax_cents": 28000,
"total_cents": 168000,
"valid_until": "2026-12-31",
"is_expired": false,
"notes": "Includes two rounds of changes.",
"terms": "Payment due within 14 days of acceptance.",
"requires_signature": true,
"sent_at": null,
"first_viewed_at": null,
"decided_at": null,
"declined_reason": null,
"converted_invoice_id": null,
"converted_invoice_number": null,
"esign_mode": "single",
"countersign_required": false,
"expires_at": null,
"reminder_cadence_days": null,
"last_reminded_at": null,
"template_id": null,
"owner_user_id": null,
"parent_quote_id": null,
"converted_at": null,
"converted_subscription_id": null,
"deposit_cents": 0,
"deposit_percent": 0,
"deposit_paid_at": null,
"approval_required": false,
"approved_at": null,
"public_view_count": 0,
"total_view_seconds": 0,
"owner_name": "Alex Morgan",
"created_at": "2026-10-01T09:00:00.000Z",
"updated_at": "2026-10-01T09:00:00.000Z",
"lines": [
{
"id": "311",
"description": "Design and build",
"quantity": 1,
"unit_price_cents": 120000,
"tax_rate_percent": 20,
"line_total_cents": 120000,
"sort_order": 10,
"product_id": null,
"price_id": null,
"recurring_interval": null,
"is_optional": false,
"is_selected": true
},
{
"id": "312",
"description": "Content writing, per page",
"quantity": 6,
"unit_price_cents": 5000,
"tax_rate_percent": 20,
"line_total_cents": 30000,
"sort_order": 20,
"product_id": null,
"price_id": null,
"recurring_interval": null,
"is_optional": false,
"is_selected": true
}
],
"signature": null,
"signers": [
{
"id": "58",
"quote_id": "42",
"party": "customer",
"role": "signer",
"name": "Jane Doe",
"email": "jane@example.com",
"sign_order": 1,
"status": "pending",
"sent_at": null,
"first_viewed_at": null,
"signed_at": null,
"declined_at": null,
"declined_reason": null,
"has_signature": false,
"typed_name": null,
"created_at": "2026-10-01T09:00:00.000Z"
}
],
"email_warning": null,
"public_token": "6X2iC9qtnELh1g69fMYR5lgT0L1FnOHHHbNR5eSXxFM",
"links": [
{
"signer_id": "58",
"name": "The customer",
"email": null,
"url": "https://app.softsolz.uk/quote/6X2iC9qtnELh1g69fMYR5lgT0L1FnOHHHbNR5eSXxFM",
"expires_at": "2026-11-30T09:00:00.000Z"
}
],
"delivery": [
{
"signer_id": "58",
"email": null,
"emailed": false,
"reason": "no_email"
}
]
}
}