beginner
shop-rentals
receipts
pdf

Receipt PDFs

Auto-generated reservation receipts with operator branding, line items, addons, tax, and payment summary

Levy Fleets TeamMay 7, 20263 min read

Every reservation has a downloadable PDF receipt accessible at /api/reservations/[id]/receipt. Includes operator branding, customer info, vehicle details, line items, taxes, and payment summary.

What's on the receipt

  • Operator name (your subaccount name)
  • Levy Fleets logo (if public/levyfleets-logo.png exists in the deploy)
  • Booking number
  • Generated-at timestamp

Customer block

  • Full name
  • Email (if provided)
  • Phone (if provided)

Rental block

  • Vehicle (number or model name)
  • Pickup datetime
  • Return datetime
  • Pickup location (if applicable)

Line items

  • Base rental
  • Each add-on with quantity × unit price = total
  • Promo discount (if any, as a negative line)
  • Adjustment / damage charge (if any)

Totals

  • Subtotal
  • Tax (with percentage shown if known)
  • Total (bold)
  • Amount paid (negative)
  • Refunded (if any, negative)
  • Balance due (bold, only if > 0)
  • Booking number + operator name
  • Centered, smaller font

Generating the receipt

Three ways:

Open in browser

Visit /api/reservations/[id]/receipt while logged in. The PDF renders inline (download or print from the browser).

From the booking detail

The booking detail page doesn't yet have a "Print receipt" button — queued. For now, manually visit the URL above.

Email to customer

Currently no automatic post-rental receipt email. Operators copy the receipt URL or download and attach manually.

A native "Email receipt" feature on the booking detail and an automatic post-completion receipt email are both on the roadmap.

When the receipt regenerates

The receipt PDF is generated on each request — no caching. So if you:

  • Change the customer's name → next download shows the new name
  • Refund the customer → refunded amount appears on next download
  • Apply a late fee → late fee appears as adjustment line

This is by design. Customers who saved an old PDF still have a historically-accurate snapshot, while new downloads reflect current state.

What's NOT on the receipt

  • Stripe charge IDs — internal-only, not customer-facing
  • Per-rider names for group bookings — only the lead booker
  • Refund reasons — refunds show as a totaled line, not itemized
  • Loyalty points earned — separate program
  • Marketing content — this is a tax/audit document, not a sales page

Operator branding

The header uses your subaccount name from subaccounts.name. To customize beyond:

  • Logo — replace public/levyfleets-logo.png (default) with your own. This affects all receipts globally; per-subaccount logo override is on the roadmap.
  • Header colors — currently fixed; per-subaccount theming is queued
  • Footer text — currently fixed to subaccount name

Currency

Pulled from the reservation's currency_code. The receipt uses locale-aware formatting (e.g., $1,234.56 for USD, €1.234,56 for EUR).

Multi-language

Receipts are English-only today. The frontend page can render in other languages but the PDF generator doesn't yet localize. Add to roadmap if you have non-English customers requesting localized receipts.

The receipt is sufficient for most consumer dispute resolution and small-claims paperwork. For tax filings:

  • Total includes tax (broken out as a line)
  • Refunds are shown if applied
  • Operator name + booking number make it auditable

For chargeback dispute evidence, attach the receipt PDF along with the signed waiver and any photos.

Reporting all receipts

To pull all receipts for a tax period, query reservations and generate on demand:

SELECT r.id, r.reservation_number, r.total_cents
FROM reservations r
WHERE r.subaccount_id = '<your-subaccount-id>'
  AND r.completed_at BETWEEN '2026-04-01' AND '2026-06-30'
  AND r.status = 'completed'
ORDER BY r.completed_at;

Then iterate and download each. A bulk-export tool is on the roadmap.

Common questions

Customer says the receipt is wrong

If a refund or adjustment was made after they downloaded, ask them to re-download. The latest version is always at the same URL.

Customer needs a paper receipt

Print from the browser. Most tablets and POS systems have a connected receipt printer; they can be set up to print from a "Print" button in the browser dialog.

Receipt has weird character formatting

Likely a font issue. Check the deployed font configuration. If the issue is in customer names with non-Latin characters, ensure the PDF renderer is using a font with extended Unicode support.