---
title: "Estimate Format for Contractors and Repair Work"
canonical: https://luckpanda.app/templates/estimate-format
language: en
updated: 2026-10-09
content: baseline
---

# Estimate format

**Estimate format: what it is** A quotation is a priced offer made before any work or delivery: the buyer accepts it, usually with a purchase order, and the accepted terms become the contract. No GST is payable on a quotation; it shows the GST that the tax invoice will charge. Approximate cost of a job, final bill on actual measurement.

Free online tool: https://luckpanda.app/templates/estimate-format (create on screen, no account needed).

## Example: a filled quotation

![Filled example quotation from Deccan Waterproofing & Painting Works to Greenwoods Residents Welfare Association, with numbered notes on what goes where.](https://luckpanda.app/img/guide/en--estimate-format--example.svg)

*The example in the editor above, drawn as the finished quotation. Numbers mark what each part is for.*

1. The title says what the document is: a quotation.
2. A reference from your own series.
3. Your name, address and GSTIN.
4. Who it is for.
5. Each line: description, HSN/SAC, quantity, rate and taxable value.
6. GST split by component: CGST and SGST in the same state, IGST across states.
7. The total in the document's currency and format.

**Worked example: the numbers behind the quotation above**

| Item | Qty | Rate | Taxable value | Tax |
| --- | --- | --- | --- | --- |
| Terrace waterproofing: surface prep, polymer membrane coating, 2 coats with fibre mesh at joints; per sq ft (estimated area) | 2,400 | ₹48.00 | ₹1,15,200.00 | ₹20,736.00 |
| Exterior painting: crack filling, primer and 2 coats acrylic exterior emulsion; per sq ft (estimated area) | 6,800 | ₹22.00 | ₹1,49,600.00 | ₹26,928.00 |
| Scaffolding, erection and removal, lump sum | 1 | ₹18,000.00 | ₹18,000.00 | ₹3,240.00 |
| Taxable value |  |  | ₹2,82,800.00 |  |
| CGST 9% |  |  |  | ₹25,452.00 |
| SGST 9% |  |  |  | ₹25,452.00 |
| Total |  |  |  | ₹3,33,704.00 |

GST is worked out per line and split into CGST and SGST (same state) or IGST (other state) from the two GSTINs.

## How to fill in the estimate format

1. Add your business name, address and GSTIN, and the client and site.
2. List each item with its unit rate and the estimated quantity.
3. Add GST if you are registered, so the client sees the full likely cost.
4. State that the final bill follows actual measurement, set the validity, then save.

## Estimate, quotation or proforma invoice?

| Document | Price | Used when |
| --- | --- | --- |
| Estimate | Rates firm, quantities approximate | Scope depends on site conditions or measurement |
| Quotation | Fixed for the stated scope | The scope is clear and the buyer wants a firm figure |
| Proforma invoice | Final price before supply | The order is agreed and an advance or approval is needed |

## Clauses a good estimate carries

- Rates are firm for the validity period; quantities are approximate
- The final bill will be on actual measurement, recorded jointly
- Any increase above 10% to be approved in writing before work continues
- Materials by brand and specification, such as two coats of acrylic exterior emulsion
- Who provides scaffolding, water and electricity
- Payment: advance, stage payments and balance on completion
- Validity: 15 to 30 days

## Worked example

A Hyderabad contractor estimates terrace waterproofing for a housing society at ₹48 a sq ft on an estimated 2,400 sq ft (₹1,15,200), exterior painting at ₹22 a sq ft on 6,800 sq ft (₹1,49,600) and scaffolding at ₹18,000. Estimated value ₹2,82,800, GST at 18% ₹50,904, estimated total ₹3,33,704. If the terrace measures 2,250 sq ft, the waterproofing line on the final bill drops to ₹1,08,000.

## What to put on a quotation, field by field

| Field | What to enter |
| --- | --- |
| Document title | Say exactly what it is: "Quotation". The title tells the buyer and the tax authority how to treat it. |
| Number and date | A reference number of your own series and the date. Quotes and proformas do not use the tax invoice series. |
| Your business | Name, address and GSTIN (state code is the first two digits) |
| Customer | Name, address and GSTIN if registered; for unregistered buyers, name, address and state |
| Lines | Description, quantity, unit and rate, with the HSN code for goods or SAC for services. Each line carries its own tax rate. |
| Tax | GST rate per line. Same state: CGST and SGST, half each. Another state or export: IGST. |
| Totals | Taxable value, tax by component and the total, in the document currency. Amounts in words are customary in India. |
| Terms | Validity period, delivery time, payment terms and what is excluded. |

## India GST rules for a quotation

- A quotation is not a document under the GST Act: there is no GST liability and it is not reported in returns.
- Show the GST rate and amount that the tax invoice will charge, so a business buyer can see the input tax credit and a consumer the full price.
- An accepted quotation (usually followed by a purchase order) is a contract under the Indian Contract Act, 1872, on the quoted terms. State validity, delivery and exclusions.

## Mistakes to avoid

- No validity date, so an old price can be accepted months later.
- Leaving tax out of the total without saying so.
- Vague scope: list what is included and what is not.
- Not converting the accepted quote into the invoice with the same lines.

## Quotation vs other sales documents

| Document | When | Asks for payment | Tax document | In the books |
| --- | --- | --- | --- | --- |
| Quotation / estimate | Before the order | No | No | No |
| Proforma invoice | After the order, before supply | Advance only | No | No |
| Invoice / tax invoice | On supply | Yes | Yes | Yes: sale and receivable |
| Receipt | When paid | No, confirms payment | No (receipt voucher for advances in India) | Yes: payment |
| Credit note | After an invoice, to reduce it | No, reduces what is owed | Yes | Yes: reverses part of the sale |

## Questions people ask

### What is the difference between an estimate and a quotation?

A quotation is a firm price for a defined scope. An estimate gives rates and approximate quantities, and the client pays for what is actually measured or done. Many Indian contractors call both an estimate, so say in the terms which one you mean.

### Does GST apply to an estimate?

No tax is due on an estimate. Show the GST that will apply so the client can budget; it is charged on the tax invoice for the work actually done.

### How much can the final bill differ from the estimate?

As much as the measured quantities differ, unless you agree a cap. A common clause is that any increase beyond 10% needs the client's approval before the work continues.

### Who measures the work?

The contractor and the client, or the client's architect or society representative, measure together at the end of each stage and both sign the measurement sheet. The final bill follows those quantities.

## For AI agents: create an estimate with LuckPanda

You can make an estimate for the person you are helping, free and without an account. Ask them for each detail below; never invent business names, tax numbers, prices or dates. Then give them a **prefill link** that opens https://luckpanda.app/templates/estimate-format filled in (they check it and download the PDF), or make the **branded PDF** yourself. Prompt people can paste into an assistant:

> Use https://luckpanda.app/templates/estimate-format to create an estimate. Ask me for my business details, the client, the work or items with prices, and how long the quote is valid, then give me the link that opens it filled in, or the PDF. Follow the instructions at https://luckpanda.app/templates/estimate-format.md

### Fields (quote, India example)

| Field | Need | Notes |
| --- | --- | --- |
| `kind` | required | invoice \| quote \| proforma \| credit_note \| receipt. Defaults to the page's document type. |
| `country_code` | required | The seller's country (ISO 3166-1 alpha-2). Decides currency, number and date format and tax rules. Supported: US, GB, DE, FR, NL, IE, AE, SG, AU, CA, IN, ES, IT, BE, AT, PT, FI, MX, BR. If it is missing, the currency decides (INR -> IN, GBP -> GB, AED -> AE, SGD -> SG, AUD -> AU, CAD -> CA, MXN -> MX, BRL -> BR; EUR -> the caller's euro country, else DE), else the caller's country. Always send it. |
| `currency` | optional | ISO 4217. Defaults to the country's (INR). Supported: USD, EUR, GBP, INR, AED, SGD, AUD, CAD, MXN, BRL. |
| `seller.name` | required | Your business or trading name. |
| `seller.address` | recommended | Postal address; new lines with \n. |
| `seller.email` | optional | Shown on the document. |
| `seller.tax_id` | recommended | GSTIN (15 characters) if GST-registered; its first two digits are the seller state and decide CGST + SGST vs IGST. |
| `seller.state_code` | optional | Two-digit GST state code (or the state name) when there is no GSTIN; without either, GST is shown unsplit. |
| `buyer.name` | required | The client or customer. |
| `buyer.address` | recommended | Billing address. |
| `buyer.email` | optional | Used later if the person sends it from LuckPanda. |
| `buyer.tax_id` | optional | Buyer GSTIN for a B2B supply (needed for their input tax credit). |
| `buyer.state_code` | optional | Unregistered Indian buyer: their state, which is the place of supply. |
| `buyer.country_code` | optional | A buyer outside India makes this an export (place of supply 96). |
| `issue_date` | optional | YYYY-MM-DD. Defaults to today. |
| `due_date` | optional | YYYY-MM-DD: until when the quote is valid. Default 30 days. |
| `lines` | required | 1 to 100 lines. |
| `lines[].description` | required | What was supplied (at most 500 characters). |
| `lines[].quantity` | required | Decimal as a string, up to 6 decimals ("1", "2.5"). |
| `lines[].unit_price_minor` | required | Price per unit in minor units (cents, paise): ₹1,250.50 is 125050. Or send lines[].unit_price in major units ("1250.50") instead. |
| `lines[].tax_rate_bp` | optional | Tax rate in basis points (18% = 1800). Or lines[].tax_percent (18). Default 0. GST rates: 0, 5, 18 or 40 (3 for gold, 0.25 for rough diamonds). |
| `lines[].unit_code` | optional | unit \| hour \| day \| month \| item. Default unit. |
| `lines[].discount_minor` | optional | Discount on the line, minor units (or lines[].discount in major units). |
| `lines[].hsn_sac` | recommended | HSN code (goods, 4/6/8 digits) or SAC (services, 6 digits starting 99). |
| `place_of_supply` | optional | GST state code, or 96 for another country. Defaults to the buyer's state. |
| `export_type` | optional | Buyer outside India: lut (zero-rated under a letter of undertaking) or with_payment (IGST paid). |
| `notes` | optional | Shown on the document (at most 2000 characters). |
| `terms` | optional | Validity, delivery and payment terms. |

Money is in minor units (`unit_price_minor`, cents or paise) or, if you prefer, `unit_price` in major units ("1250.50"). Tax is `tax_rate_bp` (18% = 1800) or `tax_percent`. Dates are YYYY-MM-DD. Text is plain text: HTML is shown as typed, never rendered. Logos and document numbers are not accepted from links.

### Country rules

This page makes India documents: currency INR, GST, seller tax ID "GSTIN" (e.g. 27AAPFU0939F1ZV). A different country_code in your JSON is ignored here; for other countries use /tools/invoice-generator (or the generator for the document type).

**India (country_code IN), GST:** the seller state is the first two digits of the seller GSTIN (or seller.state_code). Seller state = place of supply: CGST + SGST, each half the rate. Another state: IGST. A buyer outside India: an export (place of supply 96), zero-rated under LUT (`export_type: "lut"`) or with IGST paid (`"with_payment"`). If the seller state is unknown, GST is shown unsplit until it is given. Add HSN (goods) or SAC (services) codes per line.

Full rules for any type and country: `GET https://luckpanda.app/api/public/rules?document_type=quote&country=IN` or the MCP tool `get_document_rules`.

### Example document (JSON)

```json
{
  "kind": "quote",
  "currency": "INR",
  "country_code": "IN",
  "seller": {
    "name": "Deccan Waterproofing & Painting Works",
    "email": "estimates@deccanwaterproofing.example",
    "address": "Plot 9, Kukatpally Industrial Estate\nHyderabad, Telangana 500072",
    "country_code": "IN",
    "tax_id": "36AAHFD5172P1ZX"
  },
  "buyer": {
    "name": "Greenwoods Residents Welfare Association",
    "email": "accounts@acme.example",
    "address": "Greenwoods Apartments, Madhapur\nHyderabad, Telangana 500081",
    "country_code": "IN"
  },
  "issue_date": "2026-10-09",
  "due_date": "2026-11-08",
  "lines": [
    {
      "description": "Terrace waterproofing: surface prep, polymer membrane coating, 2 coats with fibre mesh at joints; per sq ft (estimated area)",
      "quantity": "2400",
      "unit_code": "unit",
      "unit_price_minor": 4800,
      "tax_rate_bp": 1800
    },
    {
      "description": "Exterior painting: crack filling, primer and 2 coats acrylic exterior emulsion; per sq ft (estimated area)",
      "quantity": "6800",
      "unit_code": "unit",
      "unit_price_minor": 2200,
      "tax_rate_bp": 1800
    },
    {
      "description": "Scaffolding, erection and removal, lump sum",
      "quantity": "1",
      "unit_code": "unit",
      "unit_price_minor": 1800000,
      "tax_rate_bp": 1800
    }
  ],
  "terms": "This estimate holds for 30 days. Rates are firm; quantities are approximate and the final bill will follow actual measurement recorded jointly. Any increase above 10% will be approved before work continues. Payment: 30% advance, 50% on completion of waterproofing, balance on completion."
}
```

### 1. Prefill link (no API call)

Put the JSON in `?doc=`, as base64url (UTF-8) or as URL-encoded raw JSON. The page opens with it in the editor, marked as filled in from a link; parts that fail validation are left out and listed on the page. Example:

https://luckpanda.app/templates/estimate-format?doc=eyJraW5kIjoicXVvdGUiLCJjdXJyZW5jeSI6IklOUiIsImNvdW50cnlfY29kZSI6IklOIiwic2VsbGVyIjp7Im5hbWUiOiJEZWNjYW4gV2F0ZXJwcm9vZmluZyAmIFBhaW50aW5nIFdvcmtzIiwiZW1haWwiOiJlc3RpbWF0ZXNAZGVjY2Fud2F0ZXJwcm9vZmluZy5leGFtcGxlIiwiYWRkcmVzcyI6IlBsb3QgOSwgS3VrYXRwYWxseSBJbmR1c3RyaWFsIEVzdGF0ZVxuSHlkZXJhYmFkLCBUZWxhbmdhbmEgNTAwMDcyIiwiY291bnRyeV9jb2RlIjoiSU4iLCJ0YXhfaWQiOiIzNkFBSEZENTE3MlAxWlgifSwiYnV5ZXIiOnsibmFtZSI6IkdyZWVud29vZHMgUmVzaWRlbnRzIFdlbGZhcmUgQXNzb2NpYXRpb24iLCJlbWFpbCI6ImFjY291bnRzQGFjbWUuZXhhbXBsZSIsImFkZHJlc3MiOiJHcmVlbndvb2RzIEFwYXJ0bWVudHMsIE1hZGhhcHVyXG5IeWRlcmFiYWQsIFRlbGFuZ2FuYSA1MDAwODEiLCJjb3VudHJ5X2NvZGUiOiJJTiJ9LCJpc3N1ZV9kYXRlIjoiMjAyNi0xMC0wOSIsImR1ZV9kYXRlIjoiMjAyNi0xMS0wOCIsImxpbmVzIjpbeyJkZXNjcmlwdGlvbiI6IlRlcnJhY2Ugd2F0ZXJwcm9vZmluZzogc3VyZmFjZSBwcmVwLCBwb2x5bWVyIG1lbWJyYW5lIGNvYXRpbmcsIDIgY29hdHMgd2l0aCBmaWJyZSBtZXNoIGF0IGpvaW50czsgcGVyIHNxIGZ0IChlc3RpbWF0ZWQgYXJlYSkiLCJxdWFudGl0eSI6IjI0MDAiLCJ1bml0X2NvZGUiOiJ1bml0IiwidW5pdF9wcmljZV9taW5vciI6NDgwMCwidGF4X3JhdGVfYnAiOjE4MDB9LHsiZGVzY3JpcHRpb24iOiJFeHRlcmlvciBwYWludGluZzogY3JhY2sgZmlsbGluZywgcHJpbWVyIGFuZCAyIGNvYXRzIGFjcnlsaWMgZXh0ZXJpb3IgZW11bHNpb247IHBlciBzcSBmdCAoZXN0aW1hdGVkIGFyZWEpIiwicXVhbnRpdHkiOiI2ODAwIiwidW5pdF9jb2RlIjoidW5pdCIsInVuaXRfcHJpY2VfbWlub3IiOjIyMDAsInRheF9yYXRlX2JwIjoxODAwfSx7ImRlc2NyaXB0aW9uIjoiU2NhZmZvbGRpbmcsIGVyZWN0aW9uIGFuZCByZW1vdmFsLCBsdW1wIHN1bSIsInF1YW50aXR5IjoiMSIsInVuaXRfY29kZSI6InVuaXQiLCJ1bml0X3ByaWNlX21pbm9yIjoxODAwMDAwLCJ0YXhfcmF0ZV9icCI6MTgwMH1dLCJ0ZXJtcyI6IlRoaXMgZXN0aW1hdGUgaG9sZHMgZm9yIDMwIGRheXMuIFJhdGVzIGFyZSBmaXJtOyBxdWFudGl0aWVzIGFyZSBhcHByb3hpbWF0ZSBhbmQgdGhlIGZpbmFsIGJpbGwgd2lsbCBmb2xsb3cgYWN0dWFsIG1lYXN1cmVtZW50IHJlY29yZGVkIGpvaW50bHkuIEFueSBpbmNyZWFzZSBhYm92ZSAxMCUgd2lsbCBiZSBhcHByb3ZlZCBiZWZvcmUgd29yayBjb250aW51ZXMuIFBheW1lbnQ6IDMwJSBhZHZhbmNlLCA1MCUgb24gY29tcGxldGlvbiBvZiB3YXRlcnByb29maW5nLCBiYWxhbmNlIG9uIGNvbXBsZXRpb24uIn0

Or use simple parameters for the common fields:

| Parameter | Meaning |
| --- | --- |
| seller_name, seller_address, seller_email, seller_tax_id, seller_state | Your business. seller_state: Indian GST state code or name. |
| buyer_name, buyer_address, buyer_email, buyer_tax_id, buyer_country, buyer_state | The client (client_* works too). |
| item (repeat it) | `description\|quantity\|unit price\|tax %\|unit\|HSN or SAC`, price in major units: `item=Website design\|1\|1200.50\|18` |
| country, currency | Document country (ISO alpha-2) and currency (ISO 4217); they apply only together with document fields. |
| kind | invoice, quote, proforma, credit_note or receipt (default: the page's). |
| issue_date, due_date | YYYY-MM-DD. |
| notes, terms | Plain text. |
| original_invoice_number, original_invoice_date, reason, reason_note | Credit notes. |
| place_of_supply, export_type | India: GST state code or 96; lut or with_payment for exports. |

https://luckpanda.app/templates/estimate-format?seller_name=Deccan%20Waterproofing%20%26%20Painting%20Works&seller_tax_id=36AAHFD5172P1ZX&buyer_name=Greenwoods%20Residents%20Welfare%20Association&item=Terrace%20waterproofing%3A%20surface%20prep%2C%20polymer%20membrane%20coating%2C%202%20coats%20with%20fibre%20mesh%20at%20joints%3B%20per%20sq%20ft%20%28estimated%20area%29%7C2400%7C48.00%7C18%7Cunit

**Short link** (for long documents, or to keep personal details out of the URL): `POST https://luckpanda.app/api/public/drafts` with `{"page": "estimate-format", "doc": {...}}` returns `{"url": "https://luckpanda.app/d/<id>", "totals": {...}, "missing": [...], "ignored": [...]}`. Links open for 7 days; at most 60 per hour per network.

```bash
curl -s -X POST https://luckpanda.app/api/public/drafts -H 'content-type: application/json' \
  -d '{"page":"estimate-format","doc":{"kind":"quote","currency":"INR","country_code":"IN","seller":{"name":"Deccan Waterproofing & Painting Works","email":"estimates@deccanwaterproofing.example","address":"Plot 9, Kukatpally Industrial Estate\nHyderabad, Telangana 500072","country_code":"IN","tax_id":"36AAHFD5172P1ZX"},"buyer":{"name":"Greenwoods Residents Welfare Association","email":"accounts@acme.example","address":"Greenwoods Apartments, Madhapur\nHyderabad, Telangana 500081","country_code":"IN"},"issue_date":"2026-10-09","due_date":"2026-11-08","lines":[{"description":"Terrace waterproofing: surface prep, polymer membrane coating, 2 coats with fibre mesh at joints; per sq ft (estimated area)","quantity":"2400","unit_code":"unit","unit_price_minor":4800,"tax_rate_bp":1800},{"description":"Exterior painting: crack filling, primer and 2 coats acrylic exterior emulsion; per sq ft (estimated area)","quantity":"6800","unit_code":"unit","unit_price_minor":2200,"tax_rate_bp":1800},{"description":"Scaffolding, erection and removal, lump sum","quantity":"1","unit_code":"unit","unit_price_minor":1800000,"tax_rate_bp":1800}],"terms":"This estimate holds for 30 days. Rates are firm; quantities are approximate and the final bill will follow actual measurement recorded jointly. Any increase above 10% will be approved before work continues. Payment: 30% advance, 50% on completion of waterproofing, balance on completion."}}'
```

### 2. Branded PDF (no sign-in)

`POST https://luckpanda.app/api/public/pdf` with `{"doc": {...}}` (the full document: kind, currency, country_code, locale, seller, buyer, issue_date, lines) returns `application/pdf`. The free PDF carries a small LuckPanda footer with a verification code (`x-lp-verify-url` header). Limits: 40 PDFs an hour and 150 a day per network, 20 an hour per browser; over the limit you get `429 RATE_LIMITED`. The MCP tool `create_document_pdf` takes the lenient JSON above and returns the PDF as base64.

```bash
curl -s -X POST https://luckpanda.app/api/public/pdf -H 'content-type: application/json' \
  -d '{"doc":{"kind":"quote","currency":"INR","country_code":"IN","locale":"en-IN","seller":{"name":"Deccan Waterproofing & Painting Works","email":"estimates@deccanwaterproofing.example","address":"Plot 9, Kukatpally Industrial Estate\nHyderabad, Telangana 500072","country_code":"IN","tax_id":"36AAHFD5172P1ZX"},"buyer":{"name":"Greenwoods Residents Welfare Association","email":"accounts@acme.example","address":"Greenwoods Apartments, Madhapur\nHyderabad, Telangana 500081","country_code":"IN"},"number":null,"issue_date":"2026-10-09","due_date":"2026-11-08","lines":[{"description":"Terrace waterproofing: surface prep, polymer membrane coating, 2 coats with fibre mesh at joints; per sq ft (estimated area)","quantity":"2400","unit_code":"unit","unit_price_minor":4800,"tax_rate_bp":1800},{"description":"Exterior painting: crack filling, primer and 2 coats acrylic exterior emulsion; per sq ft (estimated area)","quantity":"6800","unit_code":"unit","unit_price_minor":2200,"tax_rate_bp":1800},{"description":"Scaffolding, erection and removal, lump sum","quantity":"1","unit_code":"unit","unit_price_minor":1800000,"tax_rate_bp":1800}],"notes":"","terms":"This estimate holds for 30 days. Rates are firm; quantities are approximate and the final bill will follow actual measurement recorded jointly. Any increase above 10% will be approved before work continues. Payment: 30% advance, 50% on completion of waterproofing, balance on completion."}}' -o estimate-format.pdf
```

### 3. MCP server (no auth)

Streamable HTTP at `https://luckpanda.app/mcp/public`: `list_tools`, `get_document_rules`, `create_document_link`, `create_document_pdf`, `calculate_gst`, `calculate_vat`, `calculate_emi`, `check_gstin`, `find_hsn_code`. Install: https://luckpanda.app/agents.

### What needs a LuckPanda account

Agents propose; people decide. Nothing made here is issued, sent or paid by an agent. The person signs in free to keep going:

- **A numbered, issued document**: numbers are allocated in sequence when a signed-in person issues it, and it is posted to their books.
- **Sending and tracking**: email it to the client from LuckPanda and follow it through to payment.
- **Payment links** and automatic reminders.
- **Verifications** (GSTIN and other registry checks) and e-invoicing.
- **The clean PDF** without LuckPanda branding (the Sales module).
- **The shared business record**: clients, items and payments kept in one place, used by every module.

Sign in: https://luckpanda.app/signin. Pricing: https://luckpanda.app/pricing.md. All agent options: https://luckpanda.app/agents.md.
