The first page of the document DocMake makes from the sample values on this page.
Compliance
Calibration Certificate
A calibration certificate reports what an instrument actually read against a known reference, on a stated day, under stated conditions. It is not a pass sticker with a date on it. The readings are the substance, and what separates a useful certificate from a decorative one is the measurement uncertainty carried alongside each of them.
ISO/IEC 17025 decides most of the content. Clause 7.8.2 applies to every report: a title, the laboratory name and address, where the work was performed, an identifier that ties the pages together and marks the end, the customer, the method used, an unambiguous description and condition of the item, the dates of receipt, of the work and of issue, results with their units, any deviation from the method, and who authorised the release. Clause 7.8.4 then adds the calibration specific items, namely uncertainty expressed in the unit of the measurand or as a relative term, the conditions that influenced the result, a statement of how the measurements are metrologically traceable, and the readings before and after any adjustment or repair.
Two of those requirements become design decisions rather than fields. A statement of conformity to a specification has to name the decision rule applied, because whether a reading sitting on the limit passes depends entirely on how its uncertainty was treated. And a certificate is not supposed to recommend a calibration interval unless that has been agreed with the customer, so the interval and the reason it was given sit in a block that prints only when a recommended interval has been filled in, rather than on a fixed line in the header.
Accreditation attaches to a laboratory, never to a document or the tool that produced it, so nothing here confers any: the accreditation symbol, scope number and policy wording all come from your own accreditation body. What a template genuinely solves is volume. A laboratory issuing thirty certificates a week is producing one document with different rows in it, which is precisely the shape that wants generating from the calibration system rather than editing by hand.
Blanks to fill
| certificate_number | Certificate number |
| laboratory_name | Laboratory |
| laboratory_address | Laboratory address |
| calibration_location | Where the work was done |
| customer_name | Customer |
| customer_address | Customer address |
| date_received | Date received |
| date_of_calibration | Date of calibration |
| date_of_issue | Date of issue |
| item_description | Item |
| item_manufacturer | Made by |
| item_model | Model |
| item_serial | Serial number |
| item_condition | Condition on arrival |
| method_reference | Method or procedure |
| method_deviations | Departures from the method |
| ambient_temperature | Ambient temperature |
| ambient_humidity | Relative humidity |
| other_conditions | Other conditions |
| traceability_statement | Traceability statement |
| uncertainty_statement | Uncertainty statement |
| adjustment_note | Adjustment or repair |
| conformity_statement | Statement of conformity |
| decision_rule | Decision rule |
| recommended_interval | Recommended interval |
| interval_basis | Why the interval is given |
| scope_of_results_note | What the results cover |
| reproduction_note | Reproduction of this certificate |
| accreditation_statement | Accreditation |
| authorised_signatory | Authorised by |
| signatory_role | Role of the signatory |
| reference_standards[] | One per item, so a row is added for every item in the list |
| results[] | 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.
{
"certificate_number": "CAL-2026-1174",
"laboratory_name": "Northwind Instruments Calibration Laboratory",
"laboratory_address": "Str. Fabricii 118, 400632 Cluj-Napoca, Romania",
"calibration_location": "Calibration Laboratory, bench 3, at the address above",
"customer_name": "Kestrel Analytics Inc.",
"customer_address": "14 Industrial Way, Wilmington, MA 01887, United States",
"item_description": "Benchtop conductivity meter with 4-electrode flow-through cell",
"item_manufacturer": "Northwind Instruments SRL",
"item_model": "NC-220",
"item_serial": "NC220-25-0417, cell NC-CELL-0912",
"item_condition": "Received in a transport case, no visible damage. Cell electrodes carried a light deposit, removed before calibration as described in the procedure.",
"date_received": "August 17, 2026",
"date_of_calibration": "August 20, 2026",
"date_of_issue": "August 21, 2026",
"method_reference": "WI-CAL-012 revision 3, calibration of benchtop conductivity meters, model NC-220",
"method_deviations": "None",
"ambient_temperature": "20.4 C, stable within 0.3 C over the measurement sequence",
"ambient_humidity": "52 percent",
"other_conditions": "Mains supply 230 V at 50 Hz. Instrument warmed up for 45 minutes before the first reading.",
"traceability_statement": "The measurements reported are metrologically traceable to the SI through the certified reference solutions and the reference thermometer listed below, each calibrated by a laboratory whose calibrations are traceable to national metrology institutes.",
"uncertainty_statement": "The expanded uncertainties below are stated at a coverage factor of 2, which is about a 95 percent coverage probability. Every tolerance is plus or minus the figure shown. Uncertainty is quoted against the measured value except on the temperature channel, where it is quoted in degrees Celsius.",
"reference_standards": [
{
"description": "Certified conductivity reference solution, 84 microsiemens per cm",
"identifier": "STD-COND-084, lot 26B119",
"certificate": "RM-2026-0771",
"traceable_to": "National metrology institute via the solution producer",
"valid_until": "February 28, 2027"
},
{
"description": "Certified conductivity reference solution, 1413 microsiemens per cm",
"identifier": "STD-COND-1413, lot 26B121",
"certificate": "RM-2026-0772",
"traceable_to": "National metrology institute via the solution producer",
"valid_until": "February 28, 2027"
},
{
"description": "Certified conductivity reference solution, 12.88 millisiemens per cm",
"identifier": "STD-COND-1288, lot 26A077",
"certificate": "RM-2026-0410",
"traceable_to": "National metrology institute via the solution producer",
"valid_until": "November 30, 2026"
},
{
"description": "Reference thermometer, 0 to 50 C, with probe",
"identifier": "AST-0114",
"certificate": "CAL-EXT-2025-8842",
"traceable_to": "Accredited calibration laboratory",
"valid_until": "May 14, 2027"
}
],
"results": [
{
"parameter": "Conductivity, low range",
"nominal": "84.0",
"unit": "microsiemens per cm",
"as_found": "83.2",
"as_left": "84.1",
"tolerance": "1.0 percent",
"uncertainty": "0.8 percent",
"outcome": "Within tolerance"
},
{
"parameter": "Conductivity, mid range",
"nominal": "1413",
"unit": "microsiemens per cm",
"as_found": "1402.0",
"as_left": "1412.4",
"tolerance": "1.0 percent",
"uncertainty": "0.6 percent",
"outcome": "Within tolerance"
},
{
"parameter": "Conductivity, high range",
"nominal": "12.880",
"unit": "millisiemens per cm",
"as_found": "12.744",
"as_left": "12.871",
"tolerance": "1.5 percent",
"uncertainty": "0.9 percent",
"outcome": "Within tolerance"
},
{
"parameter": "Temperature channel",
"nominal": "25.00",
"unit": "degrees Celsius",
"as_found": "25.31",
"as_left": "25.04",
"tolerance": "0.20 C",
"uncertainty": "0.06 C",
"outcome": "Within tolerance"
}
],
"adjustment_note": "The as found readings on the low and high conductivity ranges fell outside the customer tolerance. A cell constant adjustment was applied and the sequence repeated; the as left column reports the readings after that adjustment.",
"conformity_statement": "Following adjustment, all reported results conform to the manufacturer specification for the NC-220 given in WI-CAL-012 table 2. The as found readings at 84 microsiemens per cm and 12.88 millisiemens per cm did not conform before adjustment.",
"decision_rule": "Simple acceptance: a result is reported as conforming when the measured value lies inside the tolerance limits, with no guard band applied. This rule is documented in the laboratory quality manual and was agreed with the customer in the calibration agreement dated January 12, 2026.",
"scope_of_results_note": "The results relate only to the item identified above, in the condition in which it was received.",
"reproduction_note": "This certificate may not be reproduced other than in full without the written approval of the laboratory.",
"accreditation_statement": "This calibration was carried out under the laboratory's internal quality system. It is not an accredited calibration and carries no accreditation body symbol or scope reference.",
"recommended_interval": "12 months, so the next calibration falls due on August 20, 2027",
"interval_basis": "Included at the customer's written request dated August 3, 2026. The laboratory does not state a calibration interval unless the customer has asked for one.",
"authorised_signatory": "Anca Marin",
"signatory_role": "Laboratory Manager and authorised signatory"
} 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 calibration-certificate.pdf \
--data-binary @- <<'JSON'
{
"template_id": "tmpl_your_template_id",
"format": "pdf",
"data": {
"certificate_number": "CAL-2026-1174",
"laboratory_name": "Northwind Instruments Calibration Laboratory",
"laboratory_address": "Str. Fabricii 118, 400632 Cluj-Napoca, Romania",
"calibration_location": "Calibration Laboratory, bench 3, at the address above",
"customer_name": "Kestrel Analytics Inc.",
"customer_address": "14 Industrial Way, Wilmington, MA 01887, United States",
"item_description": "Benchtop conductivity meter with 4-electrode flow-through cell",
"item_manufacturer": "Northwind Instruments SRL",
"item_model": "NC-220",
"item_serial": "NC220-25-0417, cell NC-CELL-0912",
"item_condition": "Received in a transport case, no visible damage. Cell electrodes carried a light deposit, removed before calibration as described in the procedure.",
"date_received": "August 17, 2026",
"date_of_calibration": "August 20, 2026",
"date_of_issue": "August 21, 2026",
"method_reference": "WI-CAL-012 revision 3, calibration of benchtop conductivity meters, model NC-220",
"method_deviations": "None",
"ambient_temperature": "20.4 C, stable within 0.3 C over the measurement sequence",
"ambient_humidity": "52 percent",
"other_conditions": "Mains supply 230 V at 50 Hz. Instrument warmed up for 45 minutes before the first reading.",
"traceability_statement": "The measurements reported are metrologically traceable to the SI through the certified reference solutions and the reference thermometer listed below, each calibrated by a laboratory whose calibrations are traceable to national metrology institutes.",
"uncertainty_statement": "The expanded uncertainties below are stated at a coverage factor of 2, which is about a 95 percent coverage probability. Every tolerance is plus or minus the figure shown. Uncertainty is quoted against the measured value except on the temperature channel, where it is quoted in degrees Celsius.",
"reference_standards": [
{
"description": "Certified conductivity reference solution, 84 microsiemens per cm",
"identifier": "STD-COND-084, lot 26B119",
"certificate": "RM-2026-0771",
"traceable_to": "National metrology institute via the solution producer",
"valid_until": "February 28, 2027"
},
{
"description": "Certified conductivity reference solution, 1413 microsiemens per cm",
"identifier": "STD-COND-1413, lot 26B121",
"certificate": "RM-2026-0772",
"traceable_to": "National metrology institute via the solution producer",
"valid_until": "February 28, 2027"
},
{
"description": "Certified conductivity reference solution, 12.88 millisiemens per cm",
"identifier": "STD-COND-1288, lot 26A077",
"certificate": "RM-2026-0410",
"traceable_to": "National metrology institute via the solution producer",
"valid_until": "November 30, 2026"
},
{
"description": "Reference thermometer, 0 to 50 C, with probe",
"identifier": "AST-0114",
"certificate": "CAL-EXT-2025-8842",
"traceable_to": "Accredited calibration laboratory",
"valid_until": "May 14, 2027"
}
],
"results": [
{
"parameter": "Conductivity, low range",
"nominal": "84.0",
"unit": "microsiemens per cm",
"as_found": "83.2",
"as_left": "84.1",
"tolerance": "1.0 percent",
"uncertainty": "0.8 percent",
"outcome": "Within tolerance"
},
{
"parameter": "Conductivity, mid range",
"nominal": "1413",
"unit": "microsiemens per cm",
"as_found": "1402.0",
"as_left": "1412.4",
"tolerance": "1.0 percent",
"uncertainty": "0.6 percent",
"outcome": "Within tolerance"
},
{
"parameter": "Conductivity, high range",
"nominal": "12.880",
"unit": "millisiemens per cm",
"as_found": "12.744",
"as_left": "12.871",
"tolerance": "1.5 percent",
"uncertainty": "0.9 percent",
"outcome": "Within tolerance"
},
{
"parameter": "Temperature channel",
"nominal": "25.00",
"unit": "degrees Celsius",
"as_found": "25.31",
"as_left": "25.04",
"tolerance": "0.20 C",
"uncertainty": "0.06 C",
"outcome": "Within tolerance"
}
],
"adjustment_note": "The as found readings on the low and high conductivity ranges fell outside the customer tolerance. A cell constant adjustment was applied and the sequence repeated; the as left column reports the readings after that adjustment.",
"conformity_statement": "Following adjustment, all reported results conform to the manufacturer specification for the NC-220 given in WI-CAL-012 table 2. The as found readings at 84 microsiemens per cm and 12.88 millisiemens per cm did not conform before adjustment.",
"decision_rule": "Simple acceptance: a result is reported as conforming when the measured value lies inside the tolerance limits, with no guard band applied. This rule is documented in the laboratory quality manual and was agreed with the customer in the calibration agreement dated January 12, 2026.",
"scope_of_results_note": "The results relate only to the item identified above, in the condition in which it was received.",
"reproduction_note": "This certificate may not be reproduced other than in full without the written approval of the laboratory.",
"accreditation_statement": "This calibration was carried out under the laboratory's internal quality system. It is not an accredited calibration and carries no accreditation body symbol or scope reference.",
"recommended_interval": "12 months, so the next calibration falls due on August 20, 2027",
"interval_basis": "Included at the customer's written request dated August 3, 2026. The laboratory does not state a calibration interval unless the customer has asked for one.",
"authorised_signatory": "Anca Marin",
"signatory_role": "Laboratory Manager and authorised signatory"
}
}
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 Calibration Certificate template with certificate number "CAL-2026-1174" and customer "Kestrel Analytics Inc.".
More compliance templates
8D Report
The eight steps a customer expects: the team, what the problem is and is not, how it was held, why it happened and what stops a repeat.
View template →Corrective Action Report
What went wrong, why it happened, the actions with an owner and a date, and the check that proves it worked.
View template →Equipment Inspection Report
A periodic examination: what was checked and how, the readings against their limits, the defects graded with a date, and the verdict.
View template →