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.

For accepted quotes, totals and line items reflect the client’s saved agreement. Excluded optional items are omitted, and editable quantities use the accepted values. Other quotes retain their offered line items. Pagination total counts all matching quotes, and has_more indicates whether another page exists.

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", "item_id": "aa0e8400-e29b-41d4-a716-446655440000", "item_code": "CAB-INSTALL", "item_name": "Cabinet supply and install", "description": "Cabinet supply and install", "quantity": 1, "unit_price": 5000.00, "amount": 5500.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 }

Line item amounts

unit_price is the price before tax for each unit. amount is the line total including tax and applicable discounts; tax_amount is its tax component. For example, one $100 line with a 1% tax code has amount: 101 and tax_amount: 1. Accepted quotes use the saved quantities and discounts.

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 UUID from GET /items. Links the line to a saved sales item and sets the Item name from the catalog. Aliases: itemId, Id. Do not send the line’s own id — that is the quote line UUID returned after create.

When item_id is provided, Rebased looks up the catalog item for your business. The quote editor Item name uses the catalog name. If you omit description, the catalog description (or name) is used.

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": [ { "item_id": "aa0e8400-e29b-41d4-a716-446655440000", "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 (id is the line UUID; item_id / item_code / item_name are present when the line is linked to a catalog item)
created_atdatetimeWhen created
updated_atdatetimeWhen last updated
Last updated on