Quotes
Statuses: DRAFTSENTACCEPTEDDECLINEDEXPIREDCONVERTED
A CONVERTED quote has been turned into an invoice and is read-only.
GETList quotes
GET/quotes
| Parameter | Type | Description |
|---|---|---|
| page | integer | Page number (default: 1) |
| limit | integer | Items per page, max 100 (default: 20) |
| search | string | Search in quote number and title |
| status | string | Filter by status |
| customerId | string | Filter by customer ID |
| sort | string | createdAt | -createdAt | validUntil | -validUntil |
curl "https://paymavo.com/api/v1/quotes?status=ACCEPTED" \
-H "Authorization: Bearer sk_live_xxx"GETGet a quote
GET/quotes/{id}
curl https://paymavo.com/api/v1/quotes/clx456 \
-H "Authorization: Bearer sk_live_xxx"POSTCreate a quote
POST/quotes
| Parameter | Type | Description |
|---|---|---|
| customerId* | string | Customer ID |
| title* | string | Quote title (max 200 chars) |
| items* | array | Line items — each with description, quantity, unitPrice (cents) |
| description | string | Quote description |
| validUntil | date-time | Validity date (defaults to 30 days from now) |
| terms | string | Terms and conditions |
| notes | string | Internal notes |
| discountType | string | percentage | fixed |
| discountValue | integer | Discount amount |
curl -X POST https://paymavo.com/api/v1/quotes \
-H "Authorization: Bearer sk_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"customerId": "clx...",
"title": "Brand redesign proposal",
"validUntil": "2026-04-01T00:00:00.000Z",
"items": [
{ "description": "Discovery & strategy", "quantity": 1, "unitPrice": 150000 },
{ "description": "Design system", "quantity": 1, "unitPrice": 350000 }
]
}'PATCHUpdate a quote
PATCH/quotes/{id}
Cannot update a CONVERTED quote — returns 409.
curl -X PATCH https://paymavo.com/api/v1/quotes/clx456 \
-H "Authorization: Bearer sk_live_xxx" \
-H "Content-Type: application/json" \
-d '{ "validUntil": "2026-05-01T00:00:00.000Z" }'DELETEDelete a quote
DELETE/quotes/{id}
Cannot delete a CONVERTED quote.
curl -X DELETE https://paymavo.com/api/v1/quotes/clx456 \
-H "Authorization: Bearer sk_live_xxx"POSTSend a quote by email
POST/quotes/{id}/send
Generates the PDF and emails it to the customer (or an override email). Sets status to SENT.
curl -X POST https://paymavo.com/api/v1/quotes/clx456/send \
-H "Authorization: Bearer sk_live_xxx" \
-H "Content-Type: application/json" \
-d '{ "email": "client@example.com" }'POSTConvert a quote to an invoice
POST/quotes/{id}/convert-to-invoice
Creates an invoice from the quote, marks the quote as CONVERTED. Returns 409 if already converted.
curl -X POST https://paymavo.com/api/v1/quotes/clx456/convert-to-invoice \
-H "Authorization: Bearer sk_live_xxx" \
-H "Content-Type: application/json" \
-d '{ "dueDate": "2026-05-01", "paymentMethod": "ONLINE_PAYMENT" }'GETGet quote PDF
GET/quotes/{id}/pdf
Returns the Cloudinary URL of the quote PDF. Generates it on-the-fly if not yet created.
curl "https://paymavo.com/api/v1/quotes/clx456/pdf" \
-H "Authorization: Bearer sk_live_xxx"Docs
Guides
API Reference