Template gallery / receipt
receipt
Letter-size payment receipt: paid stamp, payment method and reference, what the payment was applied to, and any remaining balance.
chromium default PDF 12 top-level fields 1 unit per page
Fields
The full JSON Schema is below. Required fields are marked; anything missing comes back as a 422 naming the path, the expected type and a value that would be accepted.
| Field | Type | Required | Description |
|---|---|---|---|
| receipt_number | string | required | |
| invoice_number | string | optional | The invoice this payment settles, if any. |
| paid_on | string (date) | required | |
| amount_paid | number | required | |
| currency | string | optional | |
| accent | string | optional | |
| notes | string | optional | |
| balance_due | number | optional | What is still owed after this payment. 0 prints "paid in full". |
| merchant | object { name, address, email, tax_id, … } | required | |
| customer | object { name, address, email } | required | |
| payment | object { method, last4, reference, processor } | required | |
| applied_to | array of object { description, period, amount } | optional | What the payment covered. |
Default render options
Applied unless you override them. Options are part of the cache key.
| page_size | "Letter" |
| margin | "0.5in" |
| print_background | true |
Example payload
This exact object renders the preview above. It is also what the API echoes back in a validation error, so an agent can repair a payload without a round trip to the docs.
{
"receipt_number": "RCP-8841",
"invoice_number": "INV-1042",
"paid_on": "2026-09-16",
"amount_paid": 423.08,
"currency": "USD",
"balance_due": 0,
"merchant": {
"name": "Galley Render",
"address": "2727 Jean Lafitte Dr, Fernandina Beach, FL 32034",
"email": "billing@galleyrender.com",
"tax_id": "88-3310427"
},
"customer": {
"name": "Acme Robotics",
"address": "100 Market St, Austin, TX 78701",
"email": "ap@acme.test"
},
"payment": {
"method": "Visa",
"last4": "4242",
"reference": "ch_3QkT2mB9xLp0",
"processor": "Stripe"
},
"applied_to": [
{
"description": "Starter plan",
"period": "Sep 1 – Sep 30, 2026",
"amount": 19
},
{
"description": "Overage, 96,400 renders beyond plan",
"period": "Sep 1 – Sep 30, 2026",
"amount": 385.6
},
{
"description": "Sales tax (FL, 7%)",
"amount": 18.48
}
],
"notes": "Keep this receipt for your records. Charges appear on your statement as GALLEY RENDER."
} Render it
curl -sS https://api.galleyrender.com/v1/render \
-H "Authorization: Bearer $GALLEY_API_KEY" \
-H 'content-type: application/json' \
-d '{
"template": "receipt@1",
"format": "pdf",
"data": {
"receipt_number": "RCP-8841",
"invoice_number": "INV-1042",
"paid_on": "2026-09-16",
"amount_paid": 423.08,
"currency": "USD",
"balance_due": 0,
"merchant": {
"name": "Galley Render",
"address": "2727 Jean Lafitte Dr, Fernandina Beach, FL 32034",
"email": "billing@galleyrender.com",
"tax_id": "88-3310427"
},
"customer": {
"name": "Acme Robotics",
"address": "100 Market St, Austin, TX 78701",
"email": "ap@acme.test"
},
"payment": {
"method": "Visa",
"last4": "4242",
"reference": "ch_3QkT2mB9xLp0",
"processor": "Stripe"
},
"applied_to": [
{
"description": "Starter plan",
"period": "Sep 1 – Sep 30, 2026",
"amount": 19
},
{
"description": "Overage, 96,400 renders beyond plan",
"period": "Sep 1 – Sep 30, 2026",
"amount": 385.6
},
{
"description": "Sales tax (FL, 7%)",
"amount": 18.48
}
],
"notes": "Keep this receipt for your records. Charges appear on your statement as GALLEY RENDER."
}
}' # No API key. The first call mints a 50-render trial.
curl -sS https://mcp.galleyrender.com/mcp \
-H 'content-type: application/json' \
-H 'accept: application/json, text/event-stream' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "render",
"arguments": {
"template": "receipt",
"format": "pdf",
"data": { … see the example payload above … }
}
}
}'
Pin the version — receipt@1 — in anything you ship. Publishing a new
version never changes an old one. Render endpoint reference →
Renders the example payload on the production service. No account, no key.
JSON Schema
schema.json (12 top-level properties)
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "Payment receipt",
"type": "object",
"required": [
"receipt_number",
"paid_on",
"amount_paid",
"merchant",
"customer",
"payment"
],
"additionalProperties": true,
"properties": {
"receipt_number": {
"type": "string",
"examples": [
"RCP-8841"
]
},
"invoice_number": {
"type": "string",
"description": "The invoice this payment settles, if any.",
"examples": [
"INV-1042"
]
},
"paid_on": {
"type": "string",
"format": "date",
"examples": [
"2026-09-16"
]
},
"amount_paid": {
"type": "number",
"minimum": 0,
"examples": [
423.08
]
},
"currency": {
"type": "string",
"default": "USD",
"examples": [
"USD"
]
},
"accent": {
"type": "string",
"examples": [
"#0f766e"
]
},
"notes": {
"type": "string",
"examples": [
"Keep this receipt for your records. No goods or services were provided in exchange beyond those listed above."
]
},
"balance_due": {
"type": "number",
"minimum": 0,
"description": "What is still owed after this payment. 0 prints \"paid in full\".",
"examples": [
0
]
},
"merchant": {
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"examples": [
"Galley Render"
]
},
"address": {
"type": "string",
"examples": [
"2727 Jean Lafitte Dr, Fernandina Beach, FL 32034"
]
},
"email": {
"type": "string",
"format": "email",
"examples": [
"billing@galleyrender.com"
]
},
"tax_id": {
"type": "string",
"examples": [
"88-3310427"
]
},
"logo_url": {
"type": "string",
"format": "uri",
"examples": [
"https://example.com/logo.png"
]
}
}
},
"customer": {
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"examples": [
"Acme Robotics"
]
},
"address": {
"type": "string",
"examples": [
"100 Market St, Austin, TX 78701"
]
},
"email": {
"type": "string",
"format": "email",
"examples": [
"ap@acme.test"
]
}
}
},
"payment": {
"type": "object",
"required": [
"method"
],
"properties": {
"method": {
"type": "string",
"description": "How it was paid.",
"examples": [
"Visa"
]
},
"last4": {
"type": "string",
"description": "Last four digits of the card or account.",
"examples": [
"4242"
]
},
"reference": {
"type": "string",
"description": "Processor or bank reference.",
"examples": [
"ch_3QkT2mB9xLp0"
]
},
"processor": {
"type": "string",
"examples": [
"Stripe"
]
}
}
},
"applied_to": {
"type": "array",
"description": "What the payment covered.",
"items": {
"type": "object",
"required": [
"description",
"amount"
],
"properties": {
"description": {
"type": "string",
"examples": [
"Starter plan"
]
},
"period": {
"type": "string",
"examples": [
"Sep 1 – Sep 30, 2026"
]
},
"amount": {
"type": "number",
"examples": [
19
]
}
}
}
}
}
}