Skip to Content

Quotes API

Access your sales quotes.

Scopes required: quotes:read, quotes:write (create)

List Quotes

GET /quotes

Returns all quotes for your business.

Query Parameters

ParameterTypeDescription
statusstringFilter by status: draft, sent, accepted, declined, expired
client_idstringFilter by client ID
from_datedateFilter quotes from this date (YYYY-MM-DD)
to_datedateFilter quotes to this date (YYYY-MM-DD)
pageintegerPage number (default: 1)
page_sizeintegerItems per page (default: 50, max: 100)

Example Request

curl -H "Authorization: Bearer rb_live_YOUR_API_KEY" \ "https://api.rebased.app/api/v1/external/quotes?status=sent"

Example Response

{ "quotes": [ { "id": "550e8400-e29b-41d4-a716-446655440000", "quote_number": "QTE-0001", "client_id": "660e8400-e29b-41d4-a716-446655440000", "client_name": "Acme Corporation", "status": "sent", "issue_date": "2026-02-01", "valid_until": "2026-03-01", "subtotal": 5000.00, "tax_total": 500.00, "total": 5500.00, "currency": "AUD", "notes": "Valid for 30 days", "line_items": [ { "id": "770e8400-e29b-41d4-a716-446655440000", "description": "Project Implementation", "quantity": 1, "unit_price": 5000.00, "amount": 5000.00, "tax_amount": 500.00 } ], "created_at": "2026-02-01T10:00:00Z", "updated_at": "2026-02-01T10:00:00Z" } ], "total": 1, "page": 1, "page_size": 50, "has_more": false }

Get Quote

GET /quotes/{id}

Returns a single quote by ID, including line items.

Path Parameters

ParameterTypeDescription
idstring (UUID)The quote ID

Download Quote PDF

GET /quotes/{id}/pdf

Returns the quote as a PDF file (application/pdf). Use this after POST /quotes or from GET /quotes/{id}. If the quote already has an active customer share link, it may appear in the PDF; this endpoint does not create share links.

Scope required: quotes:read

Example Request

curl -H "Authorization: Bearer rb_live_YOUR_API_KEY" \ -o "Quote-1001.pdf" \ "https://api.rebased.app/api/v1/external/quotes/550e8400-e29b-41d4-a716-446655440000/pdf"

The response body is raw PDF bytes. The Content-Disposition header includes a filename such as Quote-1001.pdf.

Create Quote

POST /quotes

Creates a new quote with line items. A quote number is automatically generated. Quotes are always created in draft status — sending and acceptance remain in the Rebased UI or via your webhook integrations.

Use default_account_id and default_tax_code_id so line items can omit account and tax fields. Discover IDs via GET /accounts?type=revenue and GET /tax-codes.

Scope required: quotes:write

Request Body

FieldTypeRequiredDescription
client_idstringYesClient ID (must belong to your business)
titlestringNoQuote title (default: first line item description, or "Quote")
issue_datedateNoIssue date in YYYY-MM-DD format (default: today)
valid_untildateNoExpiry date in YYYY-MM-DD format
valid_daysintegerNoDays until expiry from issue_date (ignored if valid_until is set)
currencystringNoCurrency code (default: AUD)
notesstringNoPrivate notes on the quote
default_account_idstringNo*Revenue account ID applied to line items missing account_id
default_tax_code_idstringNo*Tax code ID applied to line items missing tax_code_id
line_itemsarrayYesAt least one line item (see below)

*Required on each line item unless set here as a default.

Line Item Fields

FieldTypeRequiredDescription
descriptionstringNoLine item description
quantitydecimalNoQuantity (default: 1)
unit_pricedecimalYesPrice per unit
account_idstringNo*Revenue account ID (overrides default_account_id for this line)
tax_code_idstringNo*Tax code ID (overrides default_tax_code_id for this line)
item_idstringNoCatalog item ID (validated if provided)

Example Request

curl -X POST \ -H "Authorization: Bearer rb_live_YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "client_id": "660e8400-e29b-41d4-a716-446655440000", "title": "Kitchen renovation quote", "valid_days": 30, "default_account_id": "880e8400-e29b-41d4-a716-446655440000", "default_tax_code_id": "990e8400-e29b-41d4-a716-446655440000", "line_items": [ { "description": "Cabinet supply and install", "quantity": 1, "unit_price": 8500.00 }, { "description": "Labour", "quantity": 40, "unit_price": 95.00 } ] }' \ "https://api.rebased.app/api/v1/external/quotes"

Returns HTTP 201 with the created quote (same shape as Get Quote). A quote.created webhook fires if you have subscribed to that event.

Quote Object

FieldTypeDescription
idstringUnique identifier (UUID)
quote_numberstringQuote number
titlestringQuote title
client_idstringClient ID
client_namestringClient name
statusstringQuote status
issue_datedateIssue date
valid_untildateExpiry date
subtotaldecimalSubtotal before tax
tax_totaldecimalTotal tax amount
totaldecimalTotal including tax
currencystringCurrency code
notesstringQuote notes
line_itemsarrayLine items
created_atdatetimeWhen created
updated_atdatetimeWhen last updated
Last updated on