Skip to main content

PDF, email & text

Each statement that's sent produces three things for the restaurant: a PDF, an email to the address chosen in the dialog, and a text message to the phone chosen. All three carry the numbers frozen at sending (why), and the email and text link to the live statement page.

Who uses it​

  • Restaurants receive the email and text and open or download the PDF.
  • Supplier staff see the same PDF in the preview and in Statement history.

How it works​

WhenWhat happensTiming people notice
Preview StatementA PDF titled STATEMENT PREVIEW is made on the fly. Nothing is saved or sent.A few seconds per customer
SendThe PDF is made and saved; the email and text go out at the same timeWithin the send; no delay or schedule
Saving the PDF failsTried 3 times (after 0.2 s, then 0.4 s). If it still fails, the email and text still go out; the PDF is just unavailable later.—
Email or phone left emptyThat channel is skipped—
Clipp has muted the channelThat channel is skipped and isn't counted as a failure—

There are no reminders or repeat sends. A statement goes out once; the supplier sends a new one to remind.

The PDF​

Letter size. Top to bottom:

PartContent
Header, leftSupplier logo (the Clipp logo when there's none, or it can't be fetched within 3 seconds; 2 seconds for a preview), supplier name, address, phone and email
Header, rightStatement, and STATEMENT NO. {number}, or STATEMENT PREVIEW for a preview
Ship ToRestaurant name, address, phone and email
Bill ToThe same restaurant details again. A preview leaves out the restaurant's email in both; the sent PDF includes it.
BoxStatement Date (MM/DD/YYYY) and Total Due
Invoice tableINVOICE ID · INVOICE DATE · DUE DATE · INVOICE TOTAL · LINK
Aging tableCURRENT DUE · 1-30 DAYS PAST DUE · 31-60 DAYS PAST DUE · 61-90 DAYS PAST DUE · 90+ DAYS PAST DUE · TOTAL DUE (bold)
Footer, every pagePowered by Clipp · Visit {statement link} for current balances. · Page {n} of {m} · Printed {MM/DD/YYYY HH:mm}

Invoice table details:

  • INVOICE DATE is printed exactly as stored on the invoice, for example 2026-10-03, or — when the invoice has none. Statements made before the column shipped (merged Jun 30, 2026) never have one.
  • DUE DATE is MM/DD/YYYY, or —.
  • INVOICE TOTAL is the invoice's full total, not what's still owed.
  • LINK is View & Pay, which opens that invoice's own pay page on the supplier site, or — if there's no link.
  • A preview's footer link points to a placeholder (…/statement/preview), not a real statement.
  • "Printed" is the time the PDF was made, on the server's clock (verify: assumed UTC, so it can read hours ahead of New York).

Worked example. Statement #41, Oct 15, 2026, for two invoices: INV-1041, total $500.00, $200.00 already paid; INV-1052, $99.99, unpaid.

INVOICE IDINVOICE DATEDUE DATEINVOICE TOTALLINK
INV-10412026-09-1010/10/2026$500.00View & Pay
INV-10522026-10-0110/31/2026$99.99View & Pay
CURRENT DUE1-30 DAYS PAST DUE31-6061-9090+TOTAL DUE
$99.99$300.00$0.00$0.00$0.00$399.99

The invoice rows add up to $599.99 but Total Due is $399.99, because $200.00 of INV-1041 is already paid. The email for the same statement shows $300.00 and $99.99.

The email​

ItemContent
TriggerSend in the Create Statement dialog
ToThe email in the dialog (billing contact, else the restaurant's email, unless changed)
SubjectStatement from {supplier}
Inbox previewStatement from {supplier}: {total} outstanding
BodyDear {restaurant}, · A statement has been issued summarizing your outstanding invoices. · Statement Total: {total} · Statement Date: {MM/DD/YYYY} · Invoices Included: {count}
Per invoiceA card: Invoice {number} · Due {MM/DD/YYYY, blank when there's no due date} · Outstanding {amount still owed}
ButtonView & Pay Statement → the statement page
NoteThis statement was issued by {supplier}. For billing questions or discrepancies, please contact them directly.
CloseRegards, then the standard Clipp footer with support contacts

For the example above: Statement Total $399.99, Invoices Included 2, cards INV-1041 · 10/10/2026 · $300.00 and INV-1052 · 10/31/2026 · $99.99. The cards add up to the total.

The PDF is not attached; the restaurant gets it from the statement page.

The text message​

ItemContent
TriggerSend in the Create Statement dialog
ToThe phone in the dialog
TextClipp: Statement from {supplier}. Total due {total}.

View & pay: {statement link}

Reply STOP to opt out.

For the example: Clipp: Statement from Fresh Farms. Total due $399.99. The link is tracked for clicks.

Where it shows up​

  • The PDF: the preview and Send screens of the dialog, View Statements, and Download PDF on the statement page.
  • The email and text: the restaurant's inbox and phone.
  • No push notification is sent for statements.

Permissions​

Anyone holding the email or text can open the statement page; it needs no login. The saved PDF is only reachable through short-lived links (10 minutes) handed out by the statement page or View Statements.

Decisions​

  • The email lives in the codebase, not only in SendGrid. It had been overwritten by hand in SendGrid with the packing-slip email, and 7 statements went out wrong. (#2377)
  • The email shows what's still owed per invoice. Its column is labelled OUTSTANDING. (#2377)
  • The PDF shows the invoice date and the due date side by side. (#2094)
  • A failed PDF save doesn't stop the email and text. The restaurant can still open the page and pay. (#1981)
  • Statement links point at the restaurant site, never the supplier app. (#1981)

Known limitations​

  • PDF INVOICE TOTAL vs Total Due don't reconcile for part-paid invoices. The email does.
  • Ship To and Bill To are identical: both print the restaurant's own details.
  • The preview drops the restaurant's email from Ship To and Bill To, so it isn't an exact match for the PDF that is sent.
  • Invoice date and due date are in different formats on the PDF (2026-10-03 vs 10/03/2026).
  • "Reply STOP" is in the text, but statements don't check an opt-out list of their own (verify how OneSignal handles STOP).

FAQ​

Why doesn't the PDF match the email? The PDF lists each invoice's full total, and the email lists what's still owed. Both have the same Total Due.

The restaurant says there's no PDF attached. There isn't one. They click View & Pay Statement and use Download PDF on the page.

Why does the PDF say "Printed" at a strange hour? It's the server's clock, which isn't New York time.

The supplier's logo is missing from the PDF. The supplier has no logo, or it couldn't be fetched in time, so the Clipp logo was used.