The first page of the document DocMake makes from the sample values on this page.
Sales
Price List
A price list is what a buyer asks for before they are ready for a quote. It carries the catalog, the unit each price applies to, and the two dates that keep it honest: when the prices took effect and when they stop being valid.
Without a validity window an old copy circulates for years and someone eventually quotes it back at renewal. With one, the document retires itself.
Volume tiers deserve their own rows rather than a footnote. Somebody comparing 50 units against 500 should be able to read the answer instead of calculating it.
Segments usually get their own version: a partner list, a retail list, an internal cost sheet. Because the catalog is data and the price is just another column, one template renders all three from three payloads, and a price change means a new render rather than an edited PDF.
Blanks to fill
| list_name | Price list name |
| currency | Currency |
| effective_date | Prices from |
| valid_until | Prices until |
| company_name | Company |
| company_address | Company address |
| customer_segment | Who this list is for |
| price_includes | What the price includes |
| price_excludes | What the price does not include |
| payment_terms | Payment terms |
| delivery_terms | Delivery terms |
| price_notes | Notes on pricing |
| contact_name | Sales contact |
| contact_email | Contact email |
| contact_phone | Contact telephone |
| products[] | One per item, so a row is added for every item in the list |
| volume_discounts[] | One per item, so a row is added for every item in the list |
The data behind the preview
This is the exact JSON that produced the document above. Change the values, POST them to the API, and you get your version back as DOCX or PDF. Lists grow and shrink with your data; the layout adapts.
- 01 Sign up free and duplicate this template into your workspace.
- 02 Adjust the wording and branding in the visual editor.
- 03 Fill it in the app, share it as a form link, or call the API.
{
"company_name": "Thornbury Coffee Roasters",
"company_address": "Mill Yard, Stroud GL5 2HP",
"list_name": "Wholesale price list, autumn 2026",
"customer_segment": "Cafes and independent shops",
"currency": "US dollars",
"effective_date": "September 1, 2026",
"valid_until": "February 28, 2027",
"products": [
{
"item_code": "TCR-ETH1",
"item": "Ethiopia Guji",
"description": "Washed, peach and jasmine. For filter.",
"unit": "1 kg bag",
"unit_price": "$27.40",
"minimum_order": "6 bags"
},
{
"item_code": "TCR-BRZ2",
"item": "Brazil Cerrado",
"description": "Natural, cocoa and hazelnut. For espresso.",
"unit": "1 kg bag",
"unit_price": "$21.80",
"minimum_order": "6 bags"
},
{
"item_code": "TCR-HSE5",
"item": "House blend",
"description": "The everyday espresso, five origins.",
"unit": "5 kg box",
"unit_price": "$96.00",
"minimum_order": "2 boxes"
},
{
"item_code": "TCR-DEC1",
"item": "Decaf Colombia",
"description": "Sugarcane process, no solvents.",
"unit": "1 kg bag",
"unit_price": "$29.60",
"minimum_order": "4 bags"
},
{
"item_code": "TCR-FLT2",
"item": "Filter papers",
"description": "Size two, unbleached, 100 a pack.",
"unit": "pack",
"unit_price": "$4.20",
"minimum_order": "10 packs"
}
],
"volume_discounts": [
{
"tier": "Tier one",
"from_quantity": "25 kg a month",
"discount": "4%"
},
{
"tier": "Tier two",
"from_quantity": "60 kg a month",
"discount": "8%"
},
{
"tier": "Tier three",
"from_quantity": "120 kg a month",
"discount": "12%"
}
],
"price_includes": "Roasting to order, bags labelled with your own shop name, and delivery on our van inside the county.",
"price_excludes": "Sales tax, pallet delivery outside the county, and any grinder or brewing equipment.",
"payment_terms": "30 days from the invoice date. The first three orders are paid before the van leaves.",
"delivery_terms": "We roast on Monday and Thursday and deliver the next morning. An order placed after 15:00 goes on the following run.",
"price_notes": "Green coffee for this list is bought in advance, so these prices hold to the date above even when the market moves.",
"contact_name": "Marek Sobczyk",
"contact_email": "wholesale@thornburycoffee.example",
"contact_phone": "01453 555 0108"
} Generate this document via the API
One template plus changing data is the whole point. The list of blanks above is the contract, and every new set of values comes back in the same layout: fill it in the app, hand someone a form link, or POST the JSON and get the file straight back.
The request below carries this page's own values, so it runs as soon as the template exists in your workspace. Swap the values for yours and the response is your document.
curl -X POST https://app.docmake.io/api/v1/render \
-H "Authorization: Bearer $DOCMAKE_API_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
--output price-list.pdf \
--data-binary @- <<'JSON'
{
"template_id": "tmpl_your_template_id",
"format": "pdf",
"data": {
"company_name": "Thornbury Coffee Roasters",
"company_address": "Mill Yard, Stroud GL5 2HP",
"list_name": "Wholesale price list, autumn 2026",
"customer_segment": "Cafes and independent shops",
"currency": "US dollars",
"effective_date": "September 1, 2026",
"valid_until": "February 28, 2027",
"products": [
{
"item_code": "TCR-ETH1",
"item": "Ethiopia Guji",
"description": "Washed, peach and jasmine. For filter.",
"unit": "1 kg bag",
"unit_price": "$27.40",
"minimum_order": "6 bags"
},
{
"item_code": "TCR-BRZ2",
"item": "Brazil Cerrado",
"description": "Natural, cocoa and hazelnut. For espresso.",
"unit": "1 kg bag",
"unit_price": "$21.80",
"minimum_order": "6 bags"
},
{
"item_code": "TCR-HSE5",
"item": "House blend",
"description": "The everyday espresso, five origins.",
"unit": "5 kg box",
"unit_price": "$96.00",
"minimum_order": "2 boxes"
},
{
"item_code": "TCR-DEC1",
"item": "Decaf Colombia",
"description": "Sugarcane process, no solvents.",
"unit": "1 kg bag",
"unit_price": "$29.60",
"minimum_order": "4 bags"
},
{
"item_code": "TCR-FLT2",
"item": "Filter papers",
"description": "Size two, unbleached, 100 a pack.",
"unit": "pack",
"unit_price": "$4.20",
"minimum_order": "10 packs"
}
],
"volume_discounts": [
{
"tier": "Tier one",
"from_quantity": "25 kg a month",
"discount": "4%"
},
{
"tier": "Tier two",
"from_quantity": "60 kg a month",
"discount": "8%"
},
{
"tier": "Tier three",
"from_quantity": "120 kg a month",
"discount": "12%"
}
],
"price_includes": "Roasting to order, bags labelled with your own shop name, and delivery on our van inside the county.",
"price_excludes": "Sales tax, pallet delivery outside the county, and any grinder or brewing equipment.",
"payment_terms": "30 days from the invoice date. The first three orders are paid before the van leaves.",
"delivery_terms": "We roast on Monday and Thursday and deliver the next morning. An order placed after 15:00 goes on the following run.",
"price_notes": "Green coffee for this list is bought in advance, so these prices hold to the date above even when the market moves.",
"contact_name": "Marek Sobczyk",
"contact_email": "wholesale@thornburycoffee.example",
"contact_phone": "01453 555 0108"
}
}
JSON tmpl_your_template_id is
a stand-in: build this template in the visual editor and copy the id it shows, or create one with POST /api/v1/templates. Keys, formats, strict mode and batches are in the API reference.
Or let an AI assistant do it
The DocMake MCP server lets Claude and other assistants make this document the same way. Install it once:
claude mcp add docmake \
--env DOCMAKE_API_KEY=dm_your_api_key \
-- npx -y @docmake/mcp@latest Then ask for the document in plain words:
Make a PDF from my Price List template with price list name "Wholesale price list, autumn 2026" and currency "US dollars".
More sales templates
Business Proposal
The problem in their words, how you would solve it, the work priced a line at a time, and how long the price holds.
View template →Sales Commission Statement
Every deal that counted this period with its rate and its payout, the adjustments, and the total owed to one sales person.
View template →Order Confirmation
Sent the moment an order lands: what was bought, what it costs, when it arrives and who to tell if something is wrong.
View template →