Make a receipt from a template and download it as PDF, PNG or JPEG.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Work out sales tax exactly, in whole minor units. mode "add": amount is the price before tax. mode "extract": amount already includes the tax, and the net price and the tax inside it are returned. rate is a percentage like "8.25". Money is a decimal string. Returns net, tax and gross as decimal strings rounded to the currency's decimals (default 2). Free. Make receipts only for lawful purposes, such as replacing a lost receipt, bookkeeping, testing or design mockups. Using a receipt to deceive anyone, including for refunds, expense claims or proof of purchase, is prohibited.
add: amount is before tax. extract: amount includes tax
Tax rate in percent, like "8.25"
The price, as a decimal string like 100.00
Only decimals matters here (0, 2 or 3); default 2 decimals
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
claude mcp add --transport http receipt-maker https://byondr.co/receipt-maker/mcp
Work out sales tax exactly, in whole minor units. mode "add": amount is the price before tax. mode "extract": amount already includes the tax, and the net price and the tax inside it are returned. rate is a percentage like "8.25". Money is a decimal string. Returns net, tax and gross as decimal strings rounded to the currency's decimals (default 2). Free. Make receipts only for lawful purposes, such as replacing a lost receipt, bookkeeping, testing or design mockups. Using a receipt to deceive anyone, including for refunds, expense claims or proof of purchase, is prohibited.
| Argument | Type | Description |
|---|---|---|
| mode* | string | add: amount is before tax. extract: amount includes tax |
| rate* | string | Tax rate in percent, like "8.25" |
| amount* | string | The price, as a decimal string like 100.00 |
| currency | object | Only decimals matters here (0, 2 or 3); default 2 decimals |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"amount",
"rate",
"mode"
],
"properties": {
"mode": {
"enum": [
"add",
"extract"
],
"type": "string",
"description": "add: amount is before tax. extract: amount includes tax"
},
"rate": {
"type": "string",
"pattern": "^\\d{1,12}(\\.\\d{1,4})?$",
"description": "Tax rate in percent, like \"8.25\""
},
"amount": {
"type": "string",
"pattern": "^\\d{1,12}(\\.\\d{1,4})?$",
"description": "The price, as a decimal string like 100.00"
},
"currency": {
"type": "object",
"required": [
"symbol",
"decimals",
"position",
"thousands",
"decimal"
],
"properties": {
"symbol": {
"type": "string",
"maxLength": 5,
"minLength": 1
},
"decimal": {
"enum": [
".",
","
],
"type": "string"
},
"decimals": {
"anyOf": [
{
"type": "number",
"const": 0
},
{
"type": "number",
"const": 2
},
{
"type": "number",
"const": 3
}
]
},
"position": {
"enum": [
"before",
"after"
],
"type": "string"
},
"thousands": {
"enum": [
",",
".",
" ",
""
],
"type": "string"
}
},
"description": "Only decimals matters here (0, 2 or 3); default 2 decimals"
}
}
}Work out a tip and split a bill between people, in whole cents. round "none" rounds the tip to the cent; "up-total" rounds the total up to the next whole unit; "up-each" rounds each person's share up to the next whole unit and the total becomes shares times people. Returns tip, total and per_person as decimal strings. Free. Make receipts only for lawful purposes, such as replacing a lost receipt, bookkeeping, testing or design mockups. Using a receipt to deceive anyone, including for refunds, expense claims or proof of purchase, is prohibited.
| Argument | Type | Description |
|---|---|---|
| bill* | string | The bill before the tip, as a decimal string like 87.40 |
| round* | string | none: to the cent. up-total: round the total up. up-each: round each share up |
| people* | integer | How many people share the bill |
| percent* | string | Tip in percent, like "18" |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"bill",
"percent",
"people",
"round"
],
"properties": {
"bill": {
"type": "string",
"pattern": "^\\d{1,12}(\\.\\d{1,4})?$",
"description": "The bill before the tip, as a decimal string like 87.40"
},
"round": {
"enum": [
"none",
"up-total",
"up-each"
],
"type": "string",
"description": "none: to the cent. up-total: round the total up. up-each: round each share up"
},
"people": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "How many people share the bill"
},
"percent": {
"type": "string",
"pattern": "^\\d{1,12}(\\.\\d{1,4})?$",
"description": "Tip in percent, like \"18\""
}
}
}Get a one-hour signed upload URL for a logo file (PNG, JPEG or SVG, up to 2 MB; a PNG or JPEG at most 2 megapixels) that sits on disk. PUT the raw bytes to upload_url with a Content-Length header, then pass file_id as make_receipt's logo.file_id. Free. Make receipts only for lawful purposes, such as replacing a lost receipt, bookkeeping, testing or design mockups. Using a receipt to deceive anyone, including for refunds, expense claims or proof of purchase, is prohibited.
| Argument | Type | Description |
|---|---|---|
| bytes* | integer | Exact size of the file you will upload, in bytes (at most 2 MB) |
| filename | string | Original file name |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"bytes"
],
"properties": {
"bytes": {
"type": "integer",
"maximum": 2097152,
"minimum": 1,
"description": "Exact size of the file you will upload, in bytes (at most 2 MB)"
},
"filename": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Original file name"
}
}
}List the receipt templates make_receipt can use, each with its slug, name, category and kind (brand or generic). Filter by category, kind or a query on the name or slug. Call this first to get a slug. Free. Make receipts only for lawful purposes, such as replacing a lost receipt, bookkeeping, testing or design mockups. Using a receipt to deceive anyone, including for refunds, expense claims or proof of purchase, is prohibited.
| Argument | Type | Description |
|---|---|---|
| kind | string | brand or generic templates only |
| query | string | Words to look for in the template name or slug |
| category | string | Only templates in this category |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"kind": {
"enum": [
"brand",
"generic"
],
"type": "string",
"description": "brand or generic templates only"
},
"query": {
"type": "string",
"maxLength": 60,
"description": "Words to look for in the template name or slug"
},
"category": {
"enum": [
"retail",
"food",
"travel",
"services",
"finance",
"health",
"other"
],
"type": "string",
"description": "Only templates in this category"
}
}
}Make a barcode image on white, with quiet zones and the readable text under a 1-D code, and get a 24-hour download link. type is code128 (printable ASCII, up to 48 characters), ean13 (12 digits, or 13 with a check digit that must match), upca (11 digits, or 12 with a check digit that must match) or qr (up to 300 characters). format is png (default) or svg. Returns url, expires_at and text, what a reader will decode (including the check digit). Free within a daily quota counted in documents (see start.md). Make receipts only for lawful purposes, such as replacing a lost receipt, bookkeeping, testing or design mockups. Using a receipt to deceive anyone, including for refunds, expense claims or proof of purchase, is prohibited.
| Argument | Type | Description |
|---|---|---|
| type* | string | Barcode type |
| value* | string | What to encode |
| format | string | File type of the barcode |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"type",
"value"
],
"properties": {
"type": {
"enum": [
"code128",
"ean13",
"upca",
"qr"
],
"type": "string",
"description": "Barcode type"
},
"value": {
"type": "string",
"maxLength": 500,
"minLength": 1,
"description": "What to encode"
},
"format": {
"enum": [
"png",
"svg"
],
"type": "string",
"default": "png",
"description": "File type of the barcode"
}
}
}Make a receipt file from a template, with your own items, and get a 24-hour download link. Call list_templates for a slug first. Set accept_terms to true. items is required (1 to 200): name, qty and unit_price as decimal strings like "4.50", never numbers; subtotal, tax and total are worked out for you. Every other field you leave out (store name and address, date, currency, tax, payment, discounts, extra_lines, messages, barcode) uses the template's sample value, so pass an empty array to clear discounts, extra_lines or messages. format is png (default), jpeg or pdf. An optional logo goes on top: PNG, JPEG or SVG up to 2 MB (a PNG or JPEG at most 2 megapixels, for example 1600×1250; resize a bigger one first), as file_id (from create_upload), url or data_base64; it replaces the template's logo, and header.logo "none" removes the template's logo. Returns url, expires_at, the delivered image size in pixels (for a PDF, the page at 1x), the totals as formatted strings, and notes for anything that was left out or cut. Free within a daily quota counted in documents (see start.md). Make receipts only for lawful purposes, such as replacing a lost receipt, bookkeeping, testing or design mockups. Using a receipt to deceive anyone, including for refunds, expense claims or proof of purchase, is prohibited.
| Argument | Type | Description |
|---|---|---|
| tax | object | Either a rate in percent or a fixed amount, with a label; replaces the template's tax |
| tip | string | |
| logo | object | A logo for the top of the receipt: exactly one of file_id, url or data_base64. PNG, JPEG or SVG, up to 2 MB (a PNG or JPEG also at most 2 megapixels, for example 1600×1250); the file's own bytes decide the type, not its name. |
| items* | array | What was bought: name, qty and unit_price (decimal strings; a negative price is a refund line), with optional sku and note |
We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Oct 30, 2026.
| paper | string |
| format | string | File type of the receipt |
| header | object | Seller name, address lines, alignment and logo choice; fields you leave out keep the template's |
| barcode | object |
| payment | object | How it was paid; replaces the template's payment |
| currency | object | Symbol, decimals (0, 2 or 3) and number format; fields you leave out keep the template's |
| datetime | string |
| messages | array |
| sections | array |
| template* | string | Template slug from list_templates |
| discounts | array |
| date_format | string |
| extra_lines | array |
| time_format | string |
| accept_terms* | boolean | Must be true: you agree to the acceptable-use policy in this tool's description |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"template",
"accept_terms",
"items"
],
"properties": {
"tax": {
"type": "object",
"properties": {
"rate": {
"type": "string"
},
"label": {
"type": "string",
"maxLength": 120
},
"amount": {
"type": "string"
}
},
"description": "Either a rate in percent or a fixed amount, with a label; replaces the template's tax"
},
"tip": {
"type": "string"
},
"logo": {
"type": "object",
"properties": {
"url": {
"type": "string",
"format": "uri",
"description": "Or a public https URL of the logo"
},
"file_id": {
"type": "string",
"description": "A file_id from create_upload (after the PUT)"
},
"data_base64": {
"type": "string",
"description": "Or base64 bytes of the logo, up to 2 MB decoded"
}
},
"description": "A logo for the top of the receipt: exactly one of file_id, url or data_base64. PNG, JPEG or SVG, up to 2 MB (a PNG or JPEG also at most 2 megapixels, for example 1600×1250); the file's own bytes decide the type, not its name."
},
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"qty",
"unit_price"
],
"properties": {
"qty": {
"type": "string"
},
"sku": {
"type": "string",
"maxLength": 40
},
"name": {
"type": "string",
"maxLength": 120
},
"note": {
"type": "string",
"maxLength": 120
},
"unit_price": {
"type": "string"
}
}
},
"maxItems": 200,
"minItems": 1,
"description": "What was bought: name, qty and unit_price (decimal strings; a negative price is a refund line), with optional sku and note"
},
"paper": {
"enum": [
"thermal",
"white",
"yellow"
],
"type": "string"
},
"format": {
"enum": [
"png",
"pdf",
"jpeg"
],
"type": "string",
"default": "png",
"description": "File type of the receipt"
},
"header": {
"type": "object",
"properties": {
"logo": {
"enum": [
"none",
"template"
],
"type": "string",
"description": "none removes the template's built-in logo; template keeps it"
},
"name": {
"type": "string",
"maxLength": 120
},
"align": {
"enum": [
"left",
"center",
"right"
],
"type": "string"
},
"lines": {
"type": "array",
"items": {
"type": "string",
"maxLength": 120
},
"maxItems": 6
}
},
"description": "Seller name, address lines, alignment and logo choice; fields you leave out keep the template's"
},
"barcode": {
"type": "object",
"required": [
"type",
"value"
],
"properties": {
"type": {
"enum": [
"code128",
"ean13",
"upca",
"qr"
],
"type": "string"
},
"value": {
"type": "string",
"maxLength": 500,
"minLength": 1
}
}
},
"payment": {
"type": "object",
"required": [
"method"
],
"properties": {
"label": {
"type": "string",
"maxLength": 60
},
"method": {
"enum": [
"cash",
"card",
"other"
],
"type": "string"
},
"tendered": {
"type": "string"
},
"auth_code": {
"type": "string",
"maxLength": 40
},
"card_brand": {
"type": "string",
"maxLength": 30
},
"card_last4": {
"type": "string",
"pattern": "^\\d{4}$"
},
"transaction_id": {
"type": "string",
"maxLength": 60
}
},
"description": "How it was paid; replaces the template's payment"
},
"currency": {
"type": "object",
"properties": {
"symbol": {
"type": "string",
"maxLength": 5,
"minLength": 1
},
"decimal": {
"enum": [
".",
","
],
"type": "string"
},
"decimals": {
"anyOf": [
{
"type": "number",
"const": 0
},
{
"type": "number",
"const": 2
},
{
"type": "number",
"const": 3
}
]
},
"position": {
"enum": [
"before",
"after"
],
"type": "string"
},
"thousands": {
"enum": [
",",
".",
" ",
""
],
"type": "string"
}
},
"description": "Symbol, decimals (0, 2 or 3) and number format; fields you leave out keep the template's"
},
"datetime": {
"type": "string"
},
"messages": {
"type": "array",
"items": {
"type": "string",
"maxLength": 200
},
"maxItems": 12
},
"sections": {
"type": "array",
"items": {
"enum": [
"header",
"meta",
"items",
"totals",
"payment",
"barcode",
"messages"
],
"type": "string"
},
"maxItems": 28
},
"template": {
"type": "string",
"maxLength": 80,
"minLength": 1,
"description": "Template slug from list_templates"
},
"discounts": {
"type": "array",
"items": {
"type": "object",
"required": [
"label",
"amount"
],
"properties": {
"label": {
"type": "string",
"maxLength": 120
},
"amount": {
"type": "string"
}
}
},
"maxItems": 20
},
"date_format": {
"enum": [
"MM/DD/YYYY",
"DD/MM/YYYY",
"YYYY-MM-DD",
"DD.MM.YYYY"
],
"type": "string"
},
"extra_lines": {
"type": "array",
"items": {
"type": "object",
"required": [
"label",
"value"
],
"properties": {
"label": {
"type": "string",
"maxLength": 60
},
"value": {
"type": "string",
"maxLength": 120
}
}
},
"maxItems": 12
},
"time_format": {
"enum": [
"12h",
"24h"
],
"type": "string"
},
"accept_terms": {
"type": "boolean",
"const": true,
"description": "Must be true: you agree to the acceptable-use policy in this tool's description"
}
}
}