Accept Quote
Accept a quote on the customer's behalf (e.g. they confirmed by phone). Converts the quote into a normal confirmed booking at the quoted total โ all or nothing โ and fires the usual new-booking notifications: booking confirmation email, any waiver requests, and supplier notifications.
POST /v1/quotes/{id}/accept
Authenticationโ
Requires a valid API key with quotes:write scope.
Path Parametersโ
| Parameter | Type | Description |
|---|---|---|
id | integer | Quote ID |
Request Exampleโ
curl -X POST "https://app.equipdash.com/api/v1/quotes/123/accept" \
-H "Authorization: Bearer YOUR_API_KEY"
Responseโ
Returns 200 OK with the quote resource โ state is now accepted and the underlying record is a confirmed booking (same ID). Use the Bookings API for everything that happens next: payments, fulfillment, cancellation.
{
"data": {
"id": 123,
"quote_number": "Q-123",
"state": "accepted",
"decided_at": "2026-02-05T14:00:00+00:00",
"...": "..."
},
"meta": {
"request_id": "req_abc123",
"timestamp": "2026-02-05T14:00:00+00:00"
}
}
Availability re-checkโ
A quote that holds its dates (reserves_dates: true) accepts unconditionally โ the items and spots were reserved when the quote was created.
A quote that does not hold its dates is re-checked against live availability at acceptance. If the dates have been taken in the meantime, nothing is booked and the request returns 409 with code dates_unavailable (the supplier is also emailed so they can offer new dates โ typically via Duplicate Quote):
{
"error": {
"code": "dates_unavailable",
"message": "The quoted dates are no longer available.",
"details": []
},
"meta": {
"request_id": "req_abc123"
}
}
Error Responsesโ
| Status | Code | Description |
|---|---|---|
| 401 | authentication_required | Missing or invalid API key |
| 403 | insufficient_scope | API key lacks quotes:write scope |
| 404 | not_found | Quote not found (or belongs to another account) |
| 409 | dates_unavailable | A non-reserving quote's dates were taken โ nothing was booked |
| 422 | quote_accept_failed | The quote cannot be accepted (already decided, expired, etc.) |
Payment at acceptanceโ
When the business has Require online payment when a quote is accepted turned on
(Settings โ Quotes), the API cannot run an interactive card step โ acceptance still promotes the
booking, and the customer is emailed a secure payment link for the amount due. The amount
follows the booking widget's payment settings (deposit or full; deposit terms are stamped onto the
booking). The response carries a top-level payment object:
{
"data": { "...": "the accepted quote resource" },
"payment": {
"required": true,
"method": "payment_link",
"amount": 45.00,
"is_deposit": true,
"url": "https://app.equipdash.com/pay/AbC123...",
"note": "Online payment is required at acceptance for this business. The customer has been emailed a secure payment link for the amount shown; the booking is confirmed and currently unpaid."
},
"meta": { "request_id": "...", "timestamp": "..." }
}
| Field | Type | Description |
|---|---|---|
payment.required | boolean | Whether the business requires online payment at acceptance |
payment.method | string | payment_link when required (the customer pays via the emailed link); none otherwise |
payment.amount | number | The amount due now (the widget-resolved deposit, or the full total) |
payment.is_deposit | boolean | Whether the amount is a deposit (balance due later) |
payment.url | string|null | The payment link URL (also emailed to the customer); null when no payment is required or the link could not be created |
The booking is confirmed and unpaid until the customer pays โ identical to the state the booking widget leaves when online payment cannot complete.