Quotes API
Access your sales quotes.
Scopes required: quotes:read, quotes:write (create)
List Quotes
GET /quotesReturns 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
| Parameter | Type | Description |
|---|---|---|
status | string | Filter by status: draft, sent, accepted, declined, expired |
client_id | string | Filter by client ID |
from_date | date | Filter quotes from this date (YYYY-MM-DD) |
to_date | date | Filter quotes to this date (YYYY-MM-DD) |
page | integer | Page number (default: 1) |
page_size | integer | Items 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
| Parameter | Type | Description |
|---|---|---|
id | string (UUID) | The quote ID |
Download Quote PDF
GET /quotes/{id}/pdfReturns 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 /quotesCreates 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
| Field | Type | Required | Description |
|---|---|---|---|
client_id | string | Yes | Client ID (must belong to your business) |
title | string | No | Quote title (default: first line item description, or "Quote") |
issue_date | date | No | Issue date in YYYY-MM-DD format (default: today) |
valid_until | date | No | Expiry date in YYYY-MM-DD format |
valid_days | integer | No | Days until expiry from issue_date (ignored if valid_until is set) |
currency | string | No | Currency code (default: AUD) |
notes | string | No | Private notes on the quote |
default_account_id | string | No* | Revenue account ID applied to line items missing account_id |
default_tax_code_id | string | No* | Tax code ID applied to line items missing tax_code_id |
line_items | array | Yes | At least one line item (see below) |
*Required on each line item unless set here as a default.
Line Item Fields
| Field | Type | Required | Description |
|---|---|---|---|
description | string | No | Line item description |
quantity | decimal | No | Quantity (default: 1) |
unit_price | decimal | Yes | Price per unit |
account_id | string | No* | Revenue account ID (overrides default_account_id for this line) |
tax_code_id | string | No* | Tax code ID (overrides default_tax_code_id for this line) |
item_id | string | No | Catalog 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
| Field | Type | Description |
|---|---|---|
id | string | Unique identifier (UUID) |
quote_number | string | Quote number |
title | string | Quote title |
client_id | string | Client ID |
client_name | string | Client name |
status | string | Quote status |
issue_date | date | Issue date |
valid_until | date | Expiry date |
subtotal | decimal | Subtotal before tax |
tax_total | decimal | Total tax amount |
total | decimal | Total including tax |
currency | string | Currency code |
notes | string | Quote notes |
line_items | array | Line items (id is the line UUID; item_id / item_code / item_name are present when the line is linked to a catalog item) |
created_at | datetime | When created |
updated_at | datetime | When last updated |