NEW Introducing e-invoicing output for Peppol and ZUGFeRD →

Database rows in.
Branded invoices out.

Shipshot turns rows in Postgres, Stripe or Supabase into tax-correct PDF invoices and receipts. One API call renders, stores and delivers them.

500 renders a month free No card required

Workflows/Paid order → Invoice
last run 2s agoLive
TriggerListening
Row updated in orders
when status = 'paid'
idord_8F2K1
customerHartley & Co.
subtotal1240.00
currencyEUR
statuspaid
Postgresprod-eu-1
Templateinvoice-standard · v12
Northwind Coffee Co.
INVOICEINV-2026-0412
Billed toHartley & Co.14 Rue Oberkampf, Paris
Issued11 Oct 2026Due on receipt
ItemQtyAmount
Espresso blend, 5 kg4€480.00
Grinder service1€320.00
Barista training2€440.00
Subtotal€1,240.00
VAT 20%€248.00
Total€1,488.00
Rendered in 184 msPDF · A4
Saved to S3
INV-2026-0412.pdf
stored
Emailed
billing@hartley.co
sent
POST
Webhook
invoice.rendered
200

Trusted by 160+ teams who send invoices for a living

Ledgerly
Parcelbase
Fernhill
tillpoint
Harbor
mintline
Kettle
Orbitpay
Brightdesk
juno/labs
Fieldstack
Quarry
Connect your data

Point it at a table. Get a finished invoice.

Map columns to template fields once. Every new row renders with the right customer, currency and tax.

Field mapping, not glue code

Bind any column, join or JSON path to a template variable and preview it against a real row.

Source columnTemplate fieldPreview
orders.customer_name{{customer.name}}Hartley & Co.
orders.subtotal_cents{{subtotal | money}}€1,240.00
orders.vat_country{{tax.rule}}FR · 20%
line_items[order_id]{{#each items}}3 rows

Reads from where your data lives

Connect a database, a billing tool or send JSON straight to the API.

PPostgres SSupabase SStripe MMySQL NNeon BBigQuery AAirtable GSheets {}REST / JSON + 31 more

One call from your backend

Typed SDKs for TypeScript, Python, Go and Ruby. Idempotent by default.

Copy
import { Shipshot } from "@shipshot/sdk";

const ship = new Shipshot(process.env.SHIPSHOT_KEY);

const pdf = await ship.render({
  template: "invoice-standard",
  source: { table: "orders", id: "ord_8F2K1" },
  deliver: ["email", "s3://northwind-invoices"],
});

console.log(pdf.url);
// https://cdn.shipshot.dev/r/INV-2026-0412.pdf

Money and tax, done properly

Per-line rounding, VAT and sales tax rules, reverse charge notes and 160 currencies.

EURUSDGBPJPY
Subtotal€1,240.00
VAT · France 20%€248.00
Discount · LOYAL10−€0.00
Total due€1,488.00
Rounded half-even per line · ISO 4217 · FR VAT ID printed
We deleted four thousand lines of headless-Chrome glue and a fleet of render workers. Shipshot now produces every invoice we send, in eleven currencies, and nobody has thought about PDFs since.
PR
Priya RamanStaff Engineer, Parcelbase

Join 160+ teams billing with Shipshot

Start free
Automate & deliver

Every receipt leaves the moment it's paid.

Render on a database event, a webhook or a schedule, then ship the PDF wherever it needs to go.

Deliver anywhere

Fan one render out to several destinations with per-destination retries.

@Email S3Amazon S3 R2Cloudflare R2 GGCS #Slack ↗Webhook SSFTP ZZapier MMake

A delivery log you can actually read

Every render, every destination, every retry. Replay any of them with one click.

DeliveriesAllFailedRetrying
14:02:11INV-2026-0412.pdfEmailDelivered
14:02:11INV-2026-0412.pdfS3Stored
14:01:58RCPT-88213.pdfWebhook200 OK
14:01:40INV-2026-0411.pdfEmail

Batch month-end in minutes

Queue a whole billing run with one request. We parallelise, you get a single webhook when it's done.

September close · 12,480 invoicesDone
4m 12s0 failedbatch_Sep26

Hosted links on your domain

Each render gets a signed, expiring link customers can open, download or forward to accounts.

billing.northwind.co/r/INV-2026-0412
Invoice INV-2026-0412 Paid
€1,488.00
Download PDFForward
Signed link · expires in 30 dayssig=8c1f…a92
Month-end close used to block two engineers for two days. Now thirty thousand receipts render overnight, the audit trail is just there, and finance stopped filing tickets.
TF
Tomás FerreiraHead of Billing, Tillpoint

Join 160+ teams billing with Shipshot

Start free
Design & brand

Your brand, on every page.

Design templates visually or in HTML. Finance edits the copy, engineering keeps the bindings.

A template editor built for documents

Tables that paginate, headers that repeat, totals that never split across pages.

Layers
Header
Logo
Invoice no.
Bill to
Line items
Totals
Payment note
Footer
Northwind Coffee Co.
INVOICE{{number}}
Billed to{{customer.name}}
Issued{{issued_at}}
items
ItemQtyAmount
Espresso blend, 5 kg4€480.00
Grinder service1€320.00
Total{{total}}
Line items
FontInter 9pt
Row height22
DividerECECEC
Repeat header
Keep with totals
bind: items[]
sort: position asc

One brand kit, every template

Logo, colours and fonts apply everywhere. Change them once.

1F3A2E
CDE0AE
F4EFE6
030303
AaLiterata · headings
AaInter · body

Localised for every customer

Labels, dates and number formats follow the customer's locale, not yours.

de-DERechnung1.488,00 €
fr-FRFacture1 488,00 €
en-USInvoice$1,612.40
ja-JP請求書¥241,600
pt-BRFaturaR$ 8.940,00

E-invoicing without a second pipeline

The same template emits PDF/A-3 with embedded XML for EU mandates.

New
<rsm:CrossIndustry
  <ram:GrandTotal>
    1488.00
  </ram:GrandTotal>
PDF/A-3bZUGFeRD 2.3Factur-XXRechnungUBL 2.1Peppol BIS 3
Platform

Everything billing needs, quietly handled.

The unglamorous parts of invoicing, built in so you don't build them twice.

Idempotent renders

Same key, same PDF. Retries never send a customer two invoices.

Signed webhooks

HMAC-signed payloads, backoff for 72 hours and a full replay log.

Archive-grade PDFs

PDF/A-3 output with embedded fonts, stored for ten years if you ask.

Versioned templates

Every publish is a version. Pin production, preview drafts on real rows.

Region pinning

Render and store in the EU or US. Rows never leave the region you pick.

Sandbox keys

Test keys watermark every page, so drafts never reach a real inbox.

Your fonts, embedded

Upload brand fonts once. We subset and embed them in every file.

Multi-currency maths

Correct minor units, rounding and per-line tax in 160 currencies.

Audit trail

Who rendered what, from which row, with which template version.

MCP server for agents

Agents can draft, preview and send invoices with scoped, revocable tokens.

SOC 2 Type II

Annual audit, SSO, SCIM and role-based access on every paid plan.

p95 under 400 ms

A warm render pool in six regions. Batches scale to 50,000 a minute.

Customer stories

Teams that stopped building PDFs.

Fernhill2.3M receipts / mo
We moved every marketplace receipt off our homegrown renderer in a single sprint.
LO
Lena OkaforPlatform Lead
Read the story
MintlineZUGFeRD day one
Our first German e-invoicing audit passed without a single correction.
DB
Daniel BrooksCFO
Read the story
Kettle40 locales
Localised invoices for forty markets shipped in a week, by one engineer.
AT
Aiko TanakaEngineering Manager
Read the story

Your next invoice is one API call away.

Connect a table, pick a template and send your first branded PDF this afternoon.

npm i @shipshot/sdkCopy